文章目录
前言
断断续续地看完了李宏毅老师的ML课程视频,作业还没有做完,先总结一下我觉得可以单独汇总在一起的一些tips,这些tips或许跟network的选择有关,或许跟调参有关。至于单门课程的笔记,网上挺多的。
这门课程从regression过渡到neural network,然后基本就是各种与neural network相关的东西,不管是supervised learning还是unsupervised learning,即使讲到了reinforcement learning也会试图类比之前用DNN做的classification problem。内容很丰富,不过老师会举很多例子让你理解。但涵盖的内容太过广泛,有些东西也就相当于入个门,知道怎么回事,要真正搞清楚恐怕要自己去找资料深入,不过对我来说足够了,入门嘛,帮我搞清楚了很多东西,我觉得还是很好的。
有时间的话可以好好看一遍,如果想搞清楚某一方面相关的,就没必要全看完了,太多了,会花费两到三周(当然如果你看完一个视频就立马下一个,一到两周也是可以的)。
tips:老师的一些视频与PPT不是完全对应的,而且顺序上有些问题,甚至有的视频是前几年的,所以困惑的时候可以找找老师之前开设这门课的链接,找找相关视频。比如Machine Learning (2017,Spring)中reinforcement learning就比Machine Learning (2017,Fall)讲得丰富
一些基础
- 复杂的模型会包含简单的模型,因此可能会在training data上的表现更好,但过于复杂可能会导致overfitting,导致在testing data上表现不好。参数越多模型越复杂,training data过少也容易overfitting。
- delta函数
- Error due to “bias” and error due to “variance”. Variance depends on the number of samples. 简单的模型比较不容易受sample data的影响,因此variance会比较小,但可能会有较大的bias。复杂的模型可能会有较小的bias,但由于参数较多,受sample data的影响较大,会有较大的variance。
- 如何处理large bias:
- 如何处理large variance:
- 两种regularization方法:
- 如何选择一个能在kaggle上表现较好model呢,可以将training data分割,然后进行validation,想了解完整内容可以点击这里
Gradient Descent tips
Tuning your learning rates
让learning rate随epoch次数增加而下降,同时给不同的参数不同的learning rate。在keras常用adam
AdaGrad非常适合样本稀疏的问题,因为稀疏的样本下,每次梯度下降的方向,以及涉及的变量都可能有很大的差异。AdaGrad的缺点是虽然不同变量有了各自的学习率,但是初始的全局学习率还是需要手工指定。如果全局学习率过大,优化同样不稳定;而如果全局学习率过小,因为AdaGrad的特性,随着优化的进行,学习率会越来越小,很可能还没有到极值就停滞不前了。
Stochastic Gradient Descent
可以让training变得更快,但因为每次训练的都是随机的一个样本,会导致梯度的方向不会像BGD那样朝着最优点。
随机把数据打乱很重要,因为这个随机性相当于引入了“噪音”,正是因为这个噪音,使得SGD可能会避免陷入局部最优解中。
普通的那种又叫batch gradient descent
Feature Scaling
Make different features have the same scaling
每个x是一个sample,对每个feature减平均值,除以标准差
Classification
- Maximum Likelihood指的是当前这个概率分布sample出training data的概率,找到概率最大的分布。先找概率分布再进行分类,又称为Generative model( 生成模型)。生成模型需要假设数据的概率分布模型,判别模型不会,单纯是找到数值
- 当给两类数据不同的高斯分布时,考虑到model参数过多,容易Overfitting,为了有效减少参数,给描述这两个类别的高斯分布相同的协方差矩阵。
对于二元分类来说,此时用通常不会用高斯分布,可以假设是符合 Bernoulli distribution(伯努利分布)。
假设所有的feature都是相互独立产生的,这种分类叫做 Naive Bayes Classifier(朴素贝叶斯分类器) - 后验概率可以转变为sigmoid function
然后可以变成regression
这叫logistic regression,直接去求w和b,即**Discriminative model(判别模型)**与此同时,loss function变为cross entropy,即两个分布的相似程度,越相似越小。 - logistic regression不能用square error作为loss function,要用cross entropy
否则的话
这样会导致离目标远的时候,也会步伐很小。其中z=w*x+b - 分类问题的function set为:
在老师的PDF中,由于其具有相同的function set,因此将判别模型与生成模型当成同样的model。虽然老师举的例子中判别模型结果较好,但生成模型依然有自己的优势:
- softmax帮助做Multi-class Classification,拉大大小值之间的差距
- 有时候需要做Feature Transformation才能用logistic regression,但这个转化不好找,我们可以将多个logistic regression拼接起来,就成了deep learning,每个logistic regression就是一个neural。