https://study.163.com/course/courseLearn.htm?courseId=1210076550#/learn/video?lessonId=1280908425&courseId=1210076550

一、8月10日第一天:

无监督学习对应的客群分类问题,还有就是鸡尾酒会音频分离问题,吴老师开的头果然很吸引人

========================================================================

二、8月11日、第二天

吴恩达课程第二天:学完了梯度下降,收获点是他很清楚的讲解了等高线图,另外视频手动推导很直观,奇怪的点是他不先复习微积分等等,还有一个优点是它里面直接用编程语言强调了同时更新;明天快速看完线代回顾,后天看完多变量...

========================================================================

三、8月12日、第三天

吴恩达课程第三天:今天下雨堵车,到公司很晚了,不过还好,看完了吴恩达课程的第三章,大叔这个课程真亲民啊,线性代数回顾讲得超级浅,第四章是安装Octave,已经装好了,方阵求逆、奇异矩阵、退化矩阵;明天学多变量回归

========================================================================

四、8月13日、第四天

吴恩达课程第四天:多变量线性回归,其实更多的是在讲多元情况下的梯度下降、正规方程,后者直接给公示不证明,说明局限性;前者则是牵扯出了1、如何进行特征工程;2、如何选择步长;3、如何观察收敛性;非常容易通用;根据第四天的课程,补充完了脑图的细节;大叔的课程真是太照顾学渣了

========================================================================

五、8月14日、第五天

第五天吴恩达课程学习:今天学习了Octave的基本操作,耗时40多分钟;基础操作,load/save文件,计算数据、移动数据、绘制数据;控制语句;定义函数,单返回值、多返回值;以及最重要的矢量化,毕竟SIMD可以迅速加速计算过程;这一课比较繁琐,得多记忆和练习,毕竟他下面的课程全是基于Octave的,不过确实很实用;

逻辑回归主要的区别就是H假设陈述变了,从而产生了假设的决策边界(分类线),需要选择不同于线性回归的代价函数,具体来说就是一个sigmod,关于e的函数,另外逻辑回归其实真要细节看下去看来与概率论是分不开的,与最大似然函数有关,成本函数与代价函数之间的形式虽然与线性回归相比,没有变化,但实质上却应为代价函数的复杂化而变得相当难以求解了;提到的高级优化,均属于高级数值计算的内容了,大叔只给了一些软件上的例子,原理实在讲不清楚了;最后就是多元分类问题,本质上是要画多条线去区隔开多个分类;-----总得来说,其实逻辑回归的数值计算还是相当复杂的,吴已经尽可能的简化了,所以才让你能勉强听得懂;

========================================================================

六、8月15日、第六天

首先当然是定义过拟合问题,这个略过,然后是通过引入正则化的概念,来改写了线性回归的代价函数;

最后呢,则是讲解了分类问题的代价函数加上正则化项目的演算过程(惩罚项);

这个也很取巧,直接引入正则化的概念,以及正则化参数lambda,然后就是这个参数也不能选的太大(惩罚过重),也不能太小(过拟合)

总的来说,正则化背后的数学应该很复杂吧,虽然概念上很简单,但是大叔似乎直接避过了L1和L2这类东西;

概念上学完了,当然是可以理解正则化参数这个东西了,只是,细节确实都被隐藏掉了;

https://mp.weixin.qq.com/s/WwtaqfHlimkhVce7hnyxng

【史上最简单易懂、全面详细的“正则化”教程】

========================================================================

七、8月16日、第七天

我没有想到的是,吴恩达视频里讲解的神经网络反倒是显得不那么花心思的一张,首先肯定是讲神经生物学,脑科学的例子,而后展示了最简单的两种模型,带隐藏的和不带隐藏的,讲解了参数-权重本质上是一样的,以及神经网络i其实与逻辑回归有很类似的形式,只是把原来逻辑回归直接处理样本值,变成了经过一定的激活函数处理后的输出值来做处理,最后就是两个例子,举得是与非门这类的经典例子,似乎学计算机的都能很好的理解,然后将几个门的神经网络组出4层神经网络来计算XNOR这种复杂运算,最后又说明了多元分类对于神经网络而言到底是什么;

这章。。。大叔讲得也是很草率,等于草草得讲解了MLP以及前向传播的过程,有收获的是,他提醒了我们神经网络与逻辑回归形式上的相似性;

当然从理解上来说,确实远不如.....日本人写得那本《深度学习的数学》讲解的清楚了;

=====================================================================

八、8月17日、第八天

吴恩达学习第八天:神经网络反向传播算法,如我所料,这一章里也略过的证明;着重于怎样实现,总共花费了50多分钟也没看完,先讲代价函数、再讲反向传播、实现上提了一下Octave的参数展开和reshape方法、使用数值解法逼近导数和来进行梯度检测以验证算法本身、以及最后的随机初始化;这一章的推导过程比较多,参杂着实现,是前9章的集大成者....非常硬核

=====================================================================

八、8月18日、星期二、第九天

从7:45开始学,一直到了8:21,21+15=36分钟,接近40分钟解决了战斗,中间有拖拽

首先抛出问题,接下来做什么?你可能会发现你的模型对数据各种欠或者各种过,怎么去解决呢?

ok

这个其实是增加了一个参数,d,d是x的阶

这其实就是超参

接下来把数据集分成了三部分,6成的训练集,2成的交叉验证集,2成的测试集

为什么要这样的,因为多了超参啊,等于你拟合了一个特别好的d值,并不一定足够泛化,所以又多了一个集合来验证;

接下来就是在讲高bias和高variance的问题了,中文翻译就是偏差和方差问题;

以上是随着d值的增大在描述欠拟合和过拟合情况下,cv集(cross vlidation交叉验证集合)与训练集之间的偏差值的曲线;

在欠拟合情况下,Jtrain会很高,Jcv和Jtrain约等于;

在过拟合或者说高方差的情况下,Jtrain会很低,但Jcv会远高于Jtrain

接下来讲lambda参数(正则项)和偏差与方差的关系,其实选择一个合适的lambda就是在Variance与bais之间做一个平衡,所以,是一个抛物线

随着lambda的增大,Jtrain的error

肯定是越来越小的,这无疑;

最后讲了讲学习曲线

学习曲线实际上是在描述,训练样本集的大小与Jcv和Jtrain的error的关系的曲线

我们可以简单的记住两个结论,训练集的大小,对付高偏差问题,毫无增益,但对付高方差问题,是有效的;

最后给了一个总结就是,最开始提出的列表里,所有的措施所对应的能修复的的问题;

所以选择优化模型以及特征工程时,先想办法画出各种曲线,观察模型对各个训练、验证、测试集合的曲线之后,诊断当前模型的问题,最后再按照列表上的措施下药即可得到你想要的东西;

-------------------------------------------------

其实这一章说简单也简单,就是介绍了偏差、方差,以及它们与正则项之间的关系、最后介绍了一下学习曲线(训练集与偏差、方差之间的关系)。通过引入d(假设模型的阶数),讲解了实际模型优化当中的几种措施,增加训练集大小、增减特征项目、使用polynomial的特征,增减lambda正则项,来解决欠拟合与过拟合,模型不够泛化的问题;

只要依照顺序读下来,其实这一章,能看得很快,当然,课后需要好好看看偏差和方差的数学定义了,我都忘记了;

=========================================================

九、8月19日、星期三、第十天

7:49学习到了8:39,足足50分钟,但其实这50分钟内的ppt本身并不难,甚至可以说是很简单很简单,这一章其实和第11章是延续的,但这一章也比较特殊,属于吴恩达说的那些文字内容和想法本身就很重要,所以最好不要跳着看的一章,不难,但需要认真体会的一张;毕竟其中并不涉及太多的步骤,而是很多的决策;

建议很简单,和普通的编程方式是一致的,1、编写简单的实现;2、画出学习曲线;3、错误分类的分析;

然后逐步迭代;

迭代过程中,大叔用了spam邮件分类器的例子来举例,核心其实也简单,就是说,尽可能的用数值化的方式来比较你的改进与迭代,这个其实与架构和编程实现是一样的;

接下来引出了所谓的不对称性误差的分析,这里主要举的例子是癌症的分类器

这是一个有巨大偏斜的预测分类器,所以用之前管用的数值来衡量它的性能就显得很不公平;

比如,我做一个只输出你没有得癌症的分类器,其错误比率也就0.5%

于是引入了精准率和召回率的概念,很好理解,因为这是测试试纸常用的概念,假阴、假阳,概念上也很好理解,并且将他们与阙值之间的关系很好的给出了图形解释;

最后则是引出了F值的概念,当然这里的F本身并没有设么意义,只是一个方便人类快速评价算法得分的一个人值而已,其实统计学里也常用这个;

杰西莱这一节,其实很重要,就是吴恩达讲述为,在怎样的情况下,收集大量的数据集是有用的

其实我把这两个ppt的顺序弄翻过来了

更多的数据,更多的特征选择,会让bias更小,而11章也提到了,更多的数据也能搞定高效的variance

我们当然希望能得到一个小偏差、小方差的模型

但,这并不是说没有代价的;

--------------------------------------------------------

这一章的总结就是:

其实这一章是在介绍:

1、工作的套路:实现模型、keep it simple然后画出曲线,最后小步迭代;

2、套路当中的数值衡量:用error来衡量你的迭代,小心的观察你迭代当中的模式,改进,并用指标来衡量之;

3、偏斜问题的新指标:偏斜问题较为特殊,引入假阴、假阳,准确率和召回率,以及F,还有他们的权衡问题来衡量偏斜问题;

4、大数据:真的是数据越多越好么?背后的意义;

这一章是为以后理解AutoML框架的工作打了基础,尤其是工作套路和指标介绍很有意义,最后就是在说大数据集的意义,当然这一章其实还可以延伸出小数据学习;

=========================================================

十、8月20日,第十一天

怎么说呢,这一章的内容其实相当多,学习这一章基本上等于消耗我一个半小时多;

支持向量机的代价、目标以及假设函数的形式

大间距因子

SVM的决策边界

向量内积的复习

使用向量内积表达方式置换后的,SVM的决策边界

解释了为什么SVM可以产生大间距分类

非线性分类当中的多项式相乘,是构造新特征的一种方式,但问题在于,这种构造新特征的方式,是很,不可知的,很很多的问题域下,为什么要构造这些是不知道的;

然后我们考虑有三个样本X1,X2,X3的情况下,构造三个新的特征函数,F1,F2,F3,它们分别是X与L的相似度,数据表达如图,数学将这种表达称之为核函数,同时这种表达也成为高斯核

这一张也很好理解,核函数本身的定义就是相似度,那么x与l的相似度越高,那么它们将越接近于1

核函数取值的曲线直观例子

在给定参数之后,就可以计算出假设的取值,从而得出一个相当复杂的决策边界;

越接近于核函数的,相似度越高,越接近于1

其实核函数的本质是将假设函里的很多特征项目替换成了所求参数向量与新的核函数的乘积,也就是说,其本质是在构造一些新的特征

但这些标记点,以及核函数是怎么选择出来的呢?接下来是讲这些的;

OK,其中之一的方法是直接将样本点选择为L

OK,于是替换后的SVM的假设和目标、代价函数都有了新的形式

最后是SVM需要选择的参数(超参?)对偏差与方差的影响

最后就直接上库了

选C选核函数,选线性非线性,选高斯还需要选择胖还是不胖

高斯核函数在应用前需要做一个特征缩放,否则就blablabla

SVM的核函数,并不是所有的相似度计算函数都是可以应用的,需要满足默塞尔定理才可以

不同的问题类型下,可能会有一些不同的其它的核函数可以供选用

kSVM的多类别分类

实际应用时的建议,特征数量以及样本数量相关;

-----------------------------------------------------------

这一章的内容其实比较特殊,是介绍SVM的,但其实SVM就是一种变化过的逻辑回归,他们能解决的问题域也是类似的,就是分类问题,只不过引入了新的代价函数、目标函数,并且在非线性情况下引入了相似度的计算的核函数,常用的两个核函数一个是非线性核函,一个是高斯函,它能处理的数据量其实介于10-10w左右的小样本,计算量较快,可以解决文本分类问题等等;

当然,它能做的事情,基本上逻辑回归以及神经网络都OK,所以,在算力和硬件优化到位的情况下,其实SVM。。。???也就那样了?不知道现在还流行不,反正吴恩达介绍这张用了超过1个半小时的课程,倒是理解了SVM以及它存在的意义,但当下可能反而用得少了;

OK,明天学无监督

===========================================================

十一、8月21日,第十二天

在第一章其实就已经讲到了,各种聚类算法的应用

k-means算法是一个迭代算法,给定样本值,最后聚类,第一步是随机,而后分配,算出新的中心值,移动label点,最后达到收敛的label值的一个过程

实际上k-means只需要两个输入,你想要分的类的数量,以及训练样本本身

1、镞分配过程;2、移动中心过程

K-means实际上也可以针对右图问题来应用;

K-means的目标函数;

随机初始化的常用推荐方式,1、K肯定要小于m;2、K可以随机从m里选取

局部最优

然后。。。就是随机初始化,100次。。。用这种最暴力的方式来选一个最不错的结果

最后一部分是选择K的数量

如果有左图的手肘型曲线,那是再好不过,但实际问题也许是。。。。木有

最后其实就是用分类的目的来倒推分类的数目问题,在有约束(成本)的情况下,做一个分类决策

--------------------------------------------------------------------

这一章也很浅,稍微讲了讲无监督学习,什么是K-means算法,算法本身,以及它的优化目标函数,怎样随机初始化,以及算法可能在K值较小的情况下只能得到局部最优解,怎样解决局部最优解的问题,以及怎样选取K的值大小;总得来说是真的很浅....

无监督学习本身要比K-means肯定要复杂的多;估计得看后面几章吴恩达的介绍了,这简直就像道开胃小菜;

=================================================

十一、8月22日,第十三天

2维--->1维的一个蹩脚的例子

3维-->2维的一个例子

使用GDP数据集的一个降维例子

与线性回归之间的异同:寻找的是最小的投影误差

使用PCA前需要对数据做预处理,特征缩放/均值标准化

讲到了更具体的解法:先求协方差矩阵(covariance matrix)而后求奇异值分解(eigenvectors)

对协方差矩阵做完SVD奇异值分解后得到的U矩阵,取矩阵前K个向量即可的降维后的K个方向;

然后使用U矩阵即可求得新的,压缩过后的Z训练集矩阵

最后对PCA算法做总结:1、特征缩放/均值归一化;2、求解Sigma矩阵;3、奇异值分解得到U矩阵;4、slice出一个降维矩阵Ureduce;5、使用Ureduce矩阵求出新的特征矩阵z;

这一小节很奇怪,没有中文字母了,所以不知道怎么翻译才是OK的

选择一个K,让均方投影误差/全方差(?)的比值小于0.01,其含义是99%的方差被保留了

实际的降维K值选择也基本上是一个迭代过程

不断增大K来选择

实际运算中,可以使用奇异值分解后的S来计算

压缩重现,这个操作。。。其实得到的还是一个近似值

这就是压缩的逆向操作,你可以简单的立即为解压

有监督学习加速时,可以把上万个训练点的数据压缩到只有上千个的规模,而后进行训练,同时,PCA应该只应用在训练集上,cv集与test集,不应当应用

PCA的主要优点有三,1、降低存储需求;2、降低算力要求;3、可视化

不要把PCA用在防止过拟合上

防止过拟合的正道之光!!还是正则化,而不是PCA哦

PCA虽好,但并不一定香,最开始的计划不如不要PCA,直接上RAW data

-------------------------------------------------------------------------

吴恩达机器学习第十三天:主成分分析,只要讲什么是主成分分析,降维的优点,加速、可视化;求解PCA的算法过程,选择K大小的迭代过程,具体压缩数据在各个训练集应用上的过程;但其实这一章最重要的,其实是最后一部分,别误用PCA,把它当作防止过拟合的工具,另外也不要优先使用PCA,毕竟是一种近似方法,可解释行会降低的;正道的光,还是正则化和加硬件

========================================

十二、8月23日第十四天:

异常检测的一些常见应用:滥用检测、工业制造、监控

OK,回顾一下高斯分布的数据表达和曲线形式

然后就是高斯分布的参数估计了,其实倒也简单,所有样本的加和平均就是中心,然后方差就是宽度

接下来讲算法,p(x),每一个x是服从独立分布,具有自己高斯分布特征的p(Xn)

密度估计问题,Density estimation

然后总结一下异常检测算法的步骤

1、选择可以表征异常的那些特征;

2、参数拟合,通过训练样本集和高斯分布函数是可以简单的用公式计算出各个特征值所对应的参数的;

3、OK,然后来了一个新的值,计算其p(x),检测异常

举个栗子

具体的开发步骤,也就是说,选择一个训练集,一般来说是无异常的,然后测试集,一般来说是异常的,核心思想就是,虽然异常检测是一个无监督学习算法,但评估其效果时,还是需要有标签数据集来支撑;

实际的集合划分方法,不要小看这些数字,看似不经意,但明显是属于经验之谈,后面应该会讲解为何这么划分的具体原因;但这些数字明显不是随意设定的;

因为异常检测明显也是一个倾斜的数据集问题,所以与之前讲到过的癌症检测类似,也使用F值来评估整个模型,我们可以在交叉验证集合上应用不同的阙值来得到一个较好的F值,最后来逆推这个异常检测的阙值;

然后大叔很耐心的讲解了异常检测算法与监督学习,在面对异常问题时候的选择问题,简要的说就是,异常检测算法有几个非常好的特性,算法本身针对极度偏斜的数据集有很好的效果,有监督则不然,其次异常检测算法因为核心实际上是密度估计,所以,它对各种异常,以及未来的未知类型的异常均能很好的检测出,而有监督则更多的其实是针对已知的建模,它对未知的预测能力较差;

常见的工业界应用也可以给出一个很好的注释

接下来讲讲特征选择

对数据取平方根,然后画直方图

OK,减小平方根值,再观察

简单的取对数也OK

对特征值做转换后,再观察是一种常见啊做法

常见的一个问题可能就是选取的特征不足,导致异常样本的p值仍旧很高,导致异常无法被检出的情况,这时候就需要一些新的特征去进一步构造这个异常检测模型;

然后举了一个监控的例子,通过构造新的特征,将原有的简单特征之间的线性关系得以表征,来检测异常,这里说实话,讲得太浅了;

OK,接下来将多变量高斯分布;

ok,为了解决独立分布的一些缺陷,我们来用个多元高斯分布

简单的说就是,不再假设x1,x2是独立分布,而是直接建立一个统一的高斯分布

多元高斯分布的参数估计,就需要估出来一个中心,以及一个sigma(协方差矩阵)出来;

列出具体的计算公式,需要用到行列式计算,octave里使用的是det函数

具体的多元高斯分布的图像形式

最后一节演示了如何应用多元高斯分布来进行异常检测;

所以其实过程和普通的高斯分布一样,只不过公式变了,反正第一步还是参数拟合

拿CPU和MEMORY来举个栗子

单元与多元之间的联系,本质上多元是单元的一种特殊形式,其特征形成的等高线是轴对称的,依次来表征多元之间可能存在的约束关系,这是多元高斯分布的一个重要应用前提;

独立假设模型与多元模型之间的对比,看文字吧,其实大意就是前者需要手动构造一些新特征、但可计算行更好,另外,对中小样本值更加友好;

-------------------------------------------------------------------------------------

这一章学起来挺费神的,用了一个半小时左右吧,7:23开始,到8:40才结束;

当然,这一章内容也是我最感兴趣的主题之一

一开始引入异常检测的问题和动机,介绍了高斯分布,介绍了异常检测模型的通用算法,怎样评估你的异常检测模型,与有监督学习里的癌症检测相似,这也是个严重偏斜的分类问题,所以也需要用的精准率/召回率以及合成的F值指标这类评估方法;

然后大叔为我们比较了一下异常检测与有监督学习之间的异同,主要差异点我感觉还是概率函数可以无视你的pattern,针对未知的效果很好,针对极度偏斜的数据集效果很好,而监督学习更多的是针对已知的学习;

然后讲了讲如何处理特征,如果将其高斯分布化,以及如果构造一些新的特征来表征特征之间的相关性;

最后就是讲了讲多元高斯分布,公式,定义,sigma协方差矩阵,以及多元高斯分布怎么应用到异常检测当中去,还有就是它和独立分布的简单模型之间的差异,优缺点,简要的说就是,多元模型构造的是一个轴对称的钟形曲线,是一种特殊的高斯分布模型,其应用范围还是没有简单模型那么广;

这一张虽然学起来优点费神。。。。但其实主要是内容多,可。。。从理解上来说,也是相当简单;

======================================================

十三、8月24日第十五天:

这一课学了1个小时左右吧,中间还在和别人聊着天呢,所以其实应该不到一个小时

总体课程难度也是很浅很浅

推荐系统,引入问题,电影以及电影的评分矩阵可能相当的稀疏,我们的目的则是在这种情况下预测用户对未消费过的电影的评分;

基于内容的推荐算法本质是将学习每个用户的参数,将未消费的评分预测作为一个线性回归问题来处理;

问题的核心就是求出每个用户对应的回归参数解

更正式的形式,本质上还是一个线性回归;

优化目标函数

具体的优化算法,提到了一两个高级优化算法

然后开始讲协同过滤

协同过滤,问题的引出,手工标注产品的特征变量有时候往往是不现实的;

那么在已知用户的偏好、以及用户对某个具体样本的评分下,去反向构造出该产品的特征值;

从数学的角度来说就是,反正三个变量,已知两个求第三个都好说

所以其实现在是在学习Xi

协同过滤的基本思想是在随机初始化的用户偏好下,学习产品的特征,然后再次用产品的X特征学习用户的偏好特征,循环往复达到收敛的过程;

协同过滤更加泛化的表达,新的J目标函数,同时最小化Xi与参数i

经过优化后的协同过滤算法

协同过滤的向量化表达方式

低阶矩阵分解

然后用得到的Xi,关于产品的特征值,可以用相似度算法遍历所有的产品,找到相似的产品即可;进行相关推荐;

最后讲一个小技巧,实施上做均值规范化;

均值归一化的问题在于,如果有一个没有任何评分的用户出现,最小化目标会把该用户的参数全部预测为0,OK,这显然是不合理的;

然后最后经过均值归一化的未知用户评分,就直接给产品均值就好了,为什么?因为从概率上来说,这也很合理;

这样就解决了他/她被协同过滤直接搞成全都不爱的孤僻份子的问题;

----------------------------------------------------------------

刚毕业的时候学协同过滤,虽然也是能看得懂的,但是久了就忘记了具体的算法内容,这次一学,竟然这么简单?就是一个产品的特征矩阵,一个用户的特征矩阵,然后预测用户对未体验过的新的产品的评分,最后简化成了一个简答的线性回归问题;

那剩下的都简单了,基于内容的推荐就是在构造目标函数求解线性回归的标准过程,协同过滤则是用了一些技巧,在有用户评分和用户偏好的情况下,逆向求解产品特征矩阵Xi,然后用随机初始化最后逐渐逼近收敛最优解;

而后又介绍了两者的合成形式,使得整个计算过程更快,更简便,最后引入了低阶矩阵分解,能单独分理出产品的特征向量,而后用求相似度的算法来做一些推荐;

最后的最后,介绍了一下均值归一化来解决新用户无任何评价值时候不能把人家标记得太高冷的问题;

本质上是线性回归的商业化应用,所以学术界讨论的比较少,工业界讨论的比较多;

============================================

十四、8月25日第十六天:

开始学大规模机器学习

通过早年的研究发现(2001年),得数据者得天下;

还是强调一下,在猛上数据之前,还是先检查一下抽样样本来拟合,如果是搞偏差的模型,那首先第一步还是需要先做更多的特征工程;

随机梯度下降的算法修改主要是体现在修改了代价函数,以及梯度下降不再求和(BATCH)

随机梯度下降的收敛过程

小批量梯度下降算法,每次来十个

应该说这是随机梯度下降里的一个小技巧,在每次更新参数前,计算一次COST函数的值,然后记录近期1000个的代价函数的输出值,再画出来就可以简单的观察出是否是收敛的;

几种常见的曲线以及解决方式

一般来说学习率是一个常数,但你也不是不可以用一个变参来设定它,让它逐渐减小

其实这个在线学习算法很像是随机梯度下降,因为没有全样本集的概念了,而是每次学一个样本;

OK,第二个在线学习的例子就是搜索引擎根据用户点击行为的优化了;

最后。。。这一章这是在讲MAP-REDUCE?哦呵呵,专门针对HADOOP来优化一下;

小批量梯度下降算法确实很适合Map-Reduce来搞,并行化计算梯度下降,然后简单再算一次即可

----------------------------------------------------------------------------------------------

这一章花了我50分钟才看完,首先是摆出全数据集的梯度下降算法在计算量上的难度,一旦涉及到上亿数据,就很难计算下来,由此引出随机梯度下降以及小批量梯度下降算法,两种变种;

随机梯度下降,每次处理一个样本,同时可以计算出代价函数,来观察学习曲线的收敛性,这也使得它不再依赖全样本集合,那么在线学习的形式与它就非常相似,等于是一种增量学习方法,某些流算更新模型适合在线学习;

而小批量梯度下降算法则十分适合Map-Reduce的思想;每次算2-200个左右;

嗯,总的来说这一章内容就这么几句话可以说完;

===========================================

十四、8月26日第十七天:

OCR的流水线

行人检测的有监督学习

本质上是在用一个滑动窗口来扫描图片,当然窗口的大小可能需要变化;

文字识别也很类似,第一步也是用滑动窗口来寻找

探测完毕后,使用扩展算子(类似于PS的扩充选择区域)的方式,将整个区域连城一个大片;

接下来是字符的分割了

于是又用了一个监督学习算法来告诉机器,什么叫做字符与字符之间的东西

这。。。好吧

分类器训练完毕之后,就能用1D的滑动窗口算法来逐一求出图片分割的线条

最后一步就不说了

获取一个高质量的模型,最关键的还是去构建一个低偏差的模型,并使用大量的数据去训练它;

但是。。我擦,你哪里来这么多的数据呢,所以引出了人工数据合成的概念;

artificial data synthesis

第一种方式就是:用各种字体集去人工写一段程序穷举带上各种背景图片后,生成右边的这种图片

类似的,扩充数据集的方式则是,将已有图片做一些扭曲等等以生成大量的类似图片,当然因为已有图片是已经有标签的,所以这些经过扭曲的图片的标签也是一样的;

语音识别里,给一段清晰的语音加入各种背景噪音就能行程新的样本数据;

然后这里介绍了,加入随机噪声对于训练帮助不大

最后还是要强调一下,构造更多数据之前的重中之重还是需要得到一个足够低偏差的模型,然后应用人工构造、扩展构造,甚至是众包的方式来得到众多的数据;

这一节主要是在介绍构建一个机器学习流水线,以及对各个流水线上的模块应该投入多少精力,去衡量各个模块的精读,最终改善整个应用的精读;

另一个上限分析的例子

其实这个上限限分析本身就是一个对这整个系统的线性回归,就是在猜,逐渐拟合出来,这整个系统各个部分对最后整体精读的影响因子;

这倒也好理解;

最后的全课程总结页

-------------------------------------------------------------

19章举了一个例子,OCR的光学识别的流水线,文字探测->滑动窗口,文字边界分割-->边界分割分类器,文字识别,三个主要的模块构成了一个完整的应用

顺带讲解了一下滑动窗口,以及人工数据构建,最后引出机器学习整体系统的上下界分析,我理解其实应该把整个机器学习系统内部的各个模块,最后对最终的输出结果精读影响,做一个简单的因子分析,其实这本身也是回归,不说那么大,就是在分析各个模块对整体输出的影响吧;

也是比较实用的一章了

20章只有短短的5分钟最终,是吴恩达的总结陈词,回顾了一下20节课程的整体内容和讲述的主题的一个聚类;

然后最让人动容的最后几句话:【在这最后,我要说,感谢你们,能来当我的学生】

======================================

从8月10日第一天,到8月26日,第十七天,其实也就是半个多月,时间并不长,每天的负担其实也不重,比如最后一天我就花了40分钟学习

中间最长的大概是1个小时40分钟左右,内容比较多的课程

其实课程前面9-10章是比较基础的,越到后面反而越简单

吴恩达的这个课程,在整个机器学习里来上,当然是一个比较入门的课程,但好处在于他的这个课程涵盖面足够了,单变量、多变量回归,单分类、多分类,线性代数基础,octave的实用介绍、有监督学习无监督学习、SVM大边距分类器、MLP的神经网络前馈和反馈过程推导、高偏斜问题新指标的建立,低偏差模型的重要性,为什么大数据对构造性能良好的模型是有效的,降维的中心思想、推荐系统、异常检测的无监督学习概率描述,如何理解正则项,如果约束模型的复杂度,最后还讲了许多机器学习时间当中的技巧,很多是经验之谈;

也算是倾囊相授了,17天的课程收获良多啊

我也是真想说,感谢吴恩达这个老师,真是无比的谦逊以及享受教学的乐趣;

接下来看是学deeplearing.io的课程还是学神经网络了

我的计划是把视频课程全部都看完之后,再去读那一本机器学习,毕竟那本是很厉害的课本了

吴恩达的课程相当于那一本的第一part,机器学习的基础;

还带一小部分的第二part,神经网络的内容

它第三part则是讲一些前沿的研究方向了,那个我暂时不奢求能看懂,一点点来;

毕业了有将近15-16年了,这可能是我毕业之后第一次系统性学习某个东西了,学编程和框架以及微服务啊大数学啊,那些毕竟都是工程实践,边动手变学就可以了

这个是真的第一次感觉有回到学校的感觉了,理论学习避不过去的一个领域了

OK,感谢吴恩达老师

2020年8月26日

余柠