李宏毅 机器学习(1)- 梯度下降、朴素贝叶斯、线性回归、逻辑回归
Lecture 1
Regularization:
让曲线更平滑,增加training error 但会减少test error.
regularization 可以让曲线平滑,降低variance
Adagrad
AdaGrad的基本思想是对每个变量用不同的学习率,这个学习率在一开始比较大,用于快速梯度下降。随着优化过程的进行,对于已经下降很多的变量,则减缓学习率,对于还没怎么下降的变量,则保持一个较大的学习率:
Lecture 2
bias variance, 718 讲过,略
Lecture 3 gradient descent
1:如何确定learningrate
画learning rate和loss的图确定learning rate
Adagrad方法
或者设置可调节的learning rate
adagrad
可以看出 , 如果跨参数,那么微分值越大不一定是离最低点越远,例如c的微分值大,a的微分值小,但是c距离最低点的距离比a大
所以最好的step还和二次微分有关,最佳的一步是一次微分的绝对值/二次微分
那式子中为什么不采用二次微分,而是之前微分平方和的根号呢,是因为二次微分计算量复杂,而用根号平方和的方法可以预估二次微分(如果数据点多的话)
ada系列的,adam最稳定
2:快速方法:stochastic gradient descent 随机梯度下降
相比于普通的gradient descent (用所有的sample 更新参数), stochastic gradient descent采用的是每次随机取样,根据那单个样品更新参数 相比于批量梯度,这样的方法更快,更快收敛,虽然不是全局最优,但很多时候是我们可以接受的
3: Feature Scaling
make different features have the same scaling
(scaling不一样,变动一点点w对某个feature可能对结果影响很大)
常用方法:标准化,减去mean然后除std
4. Gradient Descent 原理
泰勒级数
问题转换为 得出结果 因为让上式子成立,red circle要很小,也就是说learning rate必须足够小
考虑二次微分会更精确,但是在deep learning里我们无法承受这样大的计算量
5.Gradient Descent 限制
第一: local minimum,local minimum,local minimum!!!
第二:会卡在saddle point鞍点,微分值为0
最最容易遇到的是:在plateau上卡住了,特别慢
Lecture 4 Classification
如果用regression来硬做,可能会在decrese error的过程中,分错类
1. 朴素贝叶斯
朴素贝叶斯:先算 prior 概率,假设样品概率分布为正态分布
何为朴素naive:假设变量都是independent的
那怎么得到这个distribution:** maximum likelihood 极大似然估计** 找出一个分布,让sample点出现的概率最大,也就是找出这个likelihood 的function的最大值
为了避免overfitting,减少参数,可以让每个class共享一个 covariance matrix
2.数学部分
后验概率 这就是为什么boundary为线性的?
在这里咱们可以看到,我们费劲周折假设分布,估计这些参数,极大似然估计法等等,就是为了得出w和b,那么我们为什么不直接来算w和b呢?直接算的方法就是logistic regression
Lecture 5: Logistic Regression
cross entropy 两个distribution有多接近
然后gradient descent就好啦
为什么不能用最小二乘法的解释:
1、 multiclass
2. 线性回归和逻辑回归的区别:
神奇的是两者的更新function一样
** 逻辑回归得到的是判别模型,朴素贝叶斯得到的则是生成模型**
discriminative 一般表现比 generative好
数据量少的时候,assume一个分布可能会有优势,数据量多但是noise多的dataset,generative也能有优势
语音识别是discriminate的model,也就是dnn,但是语音识别的系统是generative的,因为这个系统要先有prior概率,也就是某句话说出来的频率,language model。
3、 逻辑回归的限制
如果feature space是非线性的,那很难做分类
解决办法就是feature transformation, 例如可以把feature转换为到某一个点的距离。
现在的问题是:feature transformation 很难做,很难找出这样的办法
那现在我们可以用串联逻辑分类器的方法进行featrue transformation
这! 就是神经网络!!! 下篇请见 deep learning 部分