机器学习(吴恩达课程B站 ——个人理解:课时1.1--7.3)

(概念及实例为节点展开,以单元板块为分割部分)

注:黑色对学习内容关键部分的摘要,红色对部分内容简要理解总结,黄色对上述部分内容的简要理解总结,紫色是对学习时注意事项的提示,蓝色是对学习内容的拓展引用以便理解 ,————是对隔离一个主题的不同理解内容。

1:机器学习——一门在没有明确编程的情况下让计算机学习的科学

2:实现人工智能(更快进入AGI人工通用智能)的最好路径就是使用学习算法

3:机器学习的定义:一种是Arthur Samuel让计算机在没有明确编程的情况下学习的研究领域(非正式),机器学习两种主要类型是监督学习和无监督学习,监督学习是许多实际中使用最多的机器学习类型,强化学习是另一种机器学习算法,侧重于关于应用学习算法的实用建议(即授人以渔不如授之以渔

4:监督机器学习或更常见的监督学习是指学习  x到y  或  输入到输出 映射的算法(数据同时带有输入x和输入标签y),从而达到只接受输入而无需输出标签并给出输出的合理准确的预测或猜测(即通过不断多的实例数据以强化对结果输出确定性的接近,从而不断接近所谓的顿悟水平)(对于应用而言,有前提将其转化为结果,满足社会性需求)学习算法即通过函数等算力使之与社会实际相拟合,即对不确定性进行合理预测,而非对数据进行机械操作得出结果(房价预测被称之为回归:学会从无限多可能的数字中预测数字,第二种类型的监督学习问题是分类算法:不同之处是预测一小部分可能的输出或类别【区分classes or category】不局限于数字,但有限的产出类别,同可增加多的前提条件找到类别的边界

5:无监督学习:(数据仅带有输入x而没有输出标签y并且算法在数据)多种类型:一是不在寻找同监督学习算法此类)而是寻找特殊的问题点,分不同的集群or组,称为聚类算法(将数据【对关键字例如猜你喜欢】进行标记分类汇总,映射不同的集群以回应答复)但关键一点是计算机自行对内容分类,而非通过某种指令或学习算法 得出结果。二是异常检测,用于检测异常事件。三是降维,将一个大数据集压缩成一个小得多的数据集同时丢失尽可能少的信息。

【监督学习与无监督学习的区别:有无给出数据(有无标签)进行操作】

6:使用Jupyter Notebooks:在可选实验室,练习实验室中有两种类型 称为单元格,一种是Markdown cell,另一种是代码单元格(通过Shift Ente   r运行代码)

7:术语理解:训练模型的数据集称为训练集,表示输入的标准符号是小写的x(输入变量或输入特征),输出变量(目标变量)的标准符号是小写的y,m表示训练示例的总数,括号(x,y)表示单个训练示例,x的右上角括号中的表示示例的第几个,i是训练集中的一个索引,表示表中第几行。y-hat是y的估计或预测,函数f被称为模型,模型输出的是预测(y的估计值),

8:【模型】:一是线性回归模型(基础),提供正确答案的数据不断训练模型(特殊的监督学习)被成为回归模型,还有更多模型解决回归问题,另为常见的是分类模型,预测类别或离散类别。具有一个输入变量的线性模型的other name是单变量线性回归,实现线性回归第一个关键步骤是首先需要定义构建一个成本(代价cost)函数(平方误差成本函数),w和b是模型参数(系数或权重),是改进训练模型的变量。误差是模型输出目标减去实际的值(直线上的点与预测值之间的垂直距离),为构建一个不会随着训练集大小而自动变大的成本函数,通过计算平均平方误差而不是总平方误差。(二分之一不会影响成本函数的)————成本函数的直观理解(如何寻找最佳参数w或b):成本函数J是衡量模型预测与y实际真实值之间的差异,y的估计值取决于输入x的值。实例中先从简单的正比例函数及其图像和不同的w的值,以对J等于零的确定(当J等于0时是对y的真实值),再用不同的x的取值去用成本函数对J做成计算结果,使w的J尽可能小的更好。通过f的图像计算去画成本函数图像以便找出最小的J最好的w,b。单个w是二维图像,当w,b同时存在即为三维图像,w,b是三维图像中的x,y轴,可通过等高线图去解决3D成本函数(三维图像问题)(等高线理解为成本函数相同值的点集),找等高线图中的中心(J最小值处)附近的数据作为训练集(3D可视化成本函数J是三维中z轴的高度)。

9:梯度下降(的变体)的算法使成本函数J最小化,可用于尝试最小化任何函数(两个及以上的参数),将初始值w,b设置为0作为初始猜测,通过不断改变参数以不断降低成本J,直到J稳定或接近最小值,注意:对于特殊函数J可能存在不止一个可能的最小值,对于具有平方误差成本函数的3D可视化总是弓形或吊床形存在一个可能的最小值。即不断寻找最速下降方向,通过为参数w和b选择起始值为表面的起始点,不同的值所得到的不同的成本函数J的最小值都称为局部最小值(通过不同的初始值得到不同的局部最小值)同时将旧w更新为新w,同理b,旧w得新w,旧w得新b,而非新w代入得新b。tmp_w=w,tmp_b=b)解释:等号是赋值运算符,对w是变量赋值而所非数值断言,阿尔法是学习率(从0到1之间的小正数),阿尔法的作用是控制梯度下坡的步幅同样决定了下坡步数的大小,阿尔法后面乘以的是成本函数J的偏导数项(导数来自微积分),梯度下降是不断重复两个更新步骤:J赋值和成本函数的导数(w和b),直至算法收敛(即达到局部最小值),达到后参数w和b不再随着额外步骤而发生太大变化。————梯度下降的直观理解:一对偏导项:(最小化抛物线为例)无论取值起始值如何,w始终向着合适的w而变化,二是对于阿尔法:如果学习率太小,会影响梯度下降的效率;但如果学习率太大,有可能会使实际成本变糟,从而不断远离最小成本(大交叉可能无法收敛甚至发散),当导数值为0时达到局部最低点,梯度下降使w保持不变。越接近局部最小梯度下降时,自动采取更小的步长(从即使阿尔法是固定值,导数越来越小的表现可知,更新步骤也会自动变小

10:使用平方误差成本函数来构建具有梯度下降的线性回归模型,,推导如何计算偏导数项(偏导过程如图所示)然后是对公式的展开,梯度下降是针对局部最小值而非全局最小值,如凸函数具有单一的全局最小值.

11:运行梯度下降:("Batch"gardient descent)梯度下降过程被称为批量梯度下降,在梯度下降的每一步中,都在查看所有的训练示例(即重复每一步更新寻找最速下降),导数自动变小可理解为计算分级下降,(bash garding percent : bash梯度下降,即每次更新查看整批训练示例),然而有些版本的梯度下降不会查看整个训练集,而是在每个更新步骤查看训练数据时的较小子集

【即如何使变量实现线性回归】

12:线性回归的多类特征(具有多输入特征的多元线性回归):点积表示法可通过矢量化使其变简单

13:矢量化:通过矢量化将代码更短,运行更有效(即可利用  现代数值线性代数库如Numpy  和  代表图形处理单元的GPU硬件【最初为加快计算机图形速度而设计的硬件】等  编写向量化代码)在Python中数组的索引或计数从零开始,而非从一开始。使用向量化(在少量数据中)用代码计算模型的预测,取每个参数并乘以相关联的特性,但(在大量数据中)不使用矢量化的方法,在数学中使用for循环,而使用矢量化操作,即numpy点函数是点积运算的矢量化实现(矢量化两个好处:使代码更短,使代码运行速度更快【其原因是Numpy函数能够在计算机中使用并行硬件】示例如图所示————研究矢量化如何工作:如何在代码中创建向量,这些向量或数列被称为Numpy数组。

14:多元线性回归的梯度下降法:把多元线性回归的数学和向量化结合起来以实现多元线性回归的梯度下降带矢量化用因式分解,将单一线性回归的w,b转为向量,线性回归求w和b的另一种方法是叫做法方程,(梯度下降是最小化),另一种方法不需要迭代梯度下降算法称作法方方程法,使用高级线性代数库,只求解w和b,不迭代(缺点:不能推广到其他学习算法,速度慢,)【正态方程:使用成熟的机器学习库并调用线性回归在后端来求解w和b】

15:特性伸缩:使梯度下降工作更好的技术,功能大小之间的关系是该特性的数字和相关参数的大小,当一个特性的可能值范围很大时,更有可能选择一个相对较小的参数,当特征的可能值很小时,参数的合理值就会比较大(即根据特性值来决定权重大小以拟合实际)对训练数据执行一些转换(理解:不同的功能具有不同的值范围使梯度下降运行缓慢,因而重新缩放不同的功能,都达到彼此可比的值范围,因而加快梯度下降拓展理解:又称归一化,涉及调整数值数据的量度,使所有数据点在相似的尺度上。为保证所有维度的特征数据尺度一样,需要对原始数据做特征缩放,将数据都转化为区间【0,1】之间的数据。好处是:收敛速度快,避免数值不稳定性【如果特征尺度差异较大,可能会导致数值计算问题】,更好模型解释性【当所有特征都放在同一个尺度上,它们的权重可以更容易地相互比较】————如何实现特性伸缩获取具有非常不同值范围的特性并对它们进行缩放,使其具有彼此可比的价值范围:一是将范围除以最大值,二是进行均值正常化:从原始功能开始,再缩放,使它们的中心在零附近,计算其中的平均归一化【先求平均值,也称为训练集其的平均值】(将实际值减去平均值的差   除以   最大值减去最小值的差即得出规范化的范围),三是重新标度方法:Z分数归一化,需要计算每个特征的标准差(正态分布、钟形曲线、高斯分布即正态分布的标准差),通过计算平均值和标准差(将实际值减去平均值的差   除以   标准差)。作为经验法则,执行功能缩放时,将功能范围从周围的任何地方 加上 特征值(即可进行缩放范围,进行功能重新缩放,以便提高梯度下降的效率。)

16:如何识别梯度下降是否有效与收敛【如何为梯度下降选择一个好的学习速率】:成本函数J与梯度下降的迭代次数 构成的曲线函数称为学习曲线。理解:一是如果梯度下降工作正常,那在每次迭代之后,成本J应该降低。如果J在一次迭代后增加,那意味着任何一个阿尔法都选择得很差(意味着阿尔法太大了或者代码里面可能有bug),二是当经过多次迭代后,成本J趋于平稳,这意味着梯度下降或多或少,因为曲线不再递减。可知,事先很难判断梯度下降需要收敛多少次迭代。一个学习曲线,试图找出你什么时候可以停止训练特定模型。另一种决定何时完成的方法:训练采用自动收敛测试(如果变量很小时,在迭代过程中成本J减少的小于这个数,那可能在曲线的平坦部分,即表明找到接近最小值的参数w,b,j的值)。选择正确的阈值epsilon是困难的因而不采用自动收敛测试。

17:选择学习率:成本函数J的增加 可能是学习率太高,也有可能是代码中存在bug迹象(如添加导数项将成本J从全局最小值移得更远,用➖而非+)。 一个正确实现梯度下降的调试技巧:以足够小的学习速度,成本函数应该在每一次迭代中降低,如果不起作用,将阿尔法设成一个非常非常小的数,看是否会导致每次迭代的成本降低,如果不减反加,那意味着有窃听器(爬虫),重要的权衡是:如果学习速度小,那梯度下降可能需要大量的迭代才能收敛。尝试一系列值,发现很小的值,和找到一个很大的值,尝试选择最大可能的学习率(或者比发现的最大合理价值稍微小一些)选择自定义功能使多元线性回归更强大。

18:特征工程:特征的选择【如何选择或设计最适合学习算法的特性】:如创建一个新特性,以得到更好的模型,利用对问题的知识或直觉来设计新的功能,即通过转换或结合问题的原始特征(看对应用程序的洞察力,创新)————新算法:通过  多元线性回归特征工程  想出  多项式回归的新算法,让拟合曲线数据的非线性函数。创建新功能特性,特征放缩将毫无疑问的重要,用梯度下降,应用特征缩放将很重要,使特性进入可比的值范围。因而  高次函数 和 平方根函数 都是可选择的,利用 特征工程 和 多项式函数(Scikt Learn 开源机器学习库)

19:Motivation:线性回归预测数字,分类:输出变量y只能接受少数几个可能的值中的一个而不是无限范围内的任何数字。线性回归不是分类问题的好算法,进而引入不同的算法:Logistic回归。只有两个可能输出的分类问题称为二进制分类(在这些问题中只有两种可能的类别)如何引用这两个类或范畴,常用术语之一是调用false 或 zero类,消极和积极不一定意味坏与好。如何构建分类算法:增加例子时的分界线也称为向右移动的决定边界(添加数值不应该改变前提中的任何结论,不然会对前提和结果造成影响),Logistic回归用于分类问题,用来解决二进制分类问题。————逻辑(Logistic)回归:建立其算法,需要了解一个乙状结肠函数(逻辑函数)(z越大时,函数越接近于1,相反,当z是个非常大的负数时,函数将接近于0)了解回归函数输入一个或一组特征,将输出一个介于0和1 之间的数字。————决策边界:更好的理解逻辑回归,Logistic回归模型的输出分两步计算(即先算z,再算g),为分类预测,先设置一个阈值,找z等于0时,此时这条线叫决策边界。使用不同的参数会得到更复杂的决策边界(如通过多项式特征)  从回归的(成本cost)代价函数开始,将梯度下降应用于它, 实际训练Logistic回归模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值