李宏毅机器学习课程(持续更新。。。)

前言

虽然现在都在搞深度学习,但是总觉得之前机器学习的很多基础算法并没有掌握好,于是专门搜了李宏毅老师的机器学习课程(我的是官网的课程,是在YouTube上看的,没法上YouTube的话,b站上也有一样的视频,老师19年又新增了一些课程,而且还没更新完,附上课程ppt),打算每周看一些,算是温故而知新吧,而且说不定会给我现在的课题带来些灵感。

第一课——Regression

老师用宝可梦作为例子,用进化前的CP值和进化后的CP值做一个回归模型,真的是太生动有趣了,先用最原始一次方程来拟合,然后逐渐用高次方程,还提出了评判模型好坏的方法——损失函数,
损失函数

老师在视频中用的是均方误差函数,还提了调整模型中参数的方法——梯度下降,
梯度下降法

这两个我都理解,但引起我注意的是,老师说

image.png
这个我之前是不知道的也从没想过,所以才看到的时候很震惊,遂google之,找到了答案[1]
image.png
image.png
从图中可以很明显地看出只有一个最小值,所以不存在局部最小值或者说只有一个局部最小值。
除了上面还有一个盲区就是,
正则化
老师说正则化可以使的模型对输入没那么敏感,所以对噪声也就没那么敏感,从而提升性能。
找到了一篇很好的正则化说明[2],里面说的很详细。
image.png

第二课——Gradient Descent

这节课老师主要讲了三个内容

  • Adaptive Learning Rate
  • Stochastic Gradient Descent
  • Feature Scaling
    虽然每一个我都听过,但每一个我都不熟悉,除了第二个还可以,所以下周应该会把第一和第三个了解清楚,有机会在程序中使用一下。

第三课——ML Lecture 2: Where does the error come from?

昨晚又看完了第三课,想着赶快整理一下,不然又忘了。其实我没有做很多笔记,而且老师讲的很多都是例子,所以我只挑了重点记录。

错误主要主要表现在两个指标上——偏差和方差。

image.png
找到了一篇讲的非常好的知乎专栏,我理解的偏差就是一个模型的预测值的平均值与真实值的差(但是很多文章中都写成平方的形式,所以我有点不确定我所说的偏差是不是就是平方形式的呢,这个形式有点像均方误差的样子了。)
image.png
方差就是不同模型的所有预测值与其平均值的差的平方和,再求平均值。公式如下
image.png
其中
image.png
是预测值的平均值。
知道这两个指标是为了评定模型是否拟合良好, 高偏差说明模型欠拟合;低偏差高方差说明模型过拟合。
欠拟合与过拟合
偏差-方差dilemma
就是说当模型的拟合能力不够强(欠拟合)时,模型无法根据训练数据给出靠谱的预测数据,可能预测值分布的七零八落(低方差),也可能分布的很集中(高方差),但是预测值离真实值都很远,这时候就表现为高偏差。
当模型拟合能力特别特别强(过拟合)时,模型可以根据自己训练数据给出几乎正确的预测值(训练集上低偏差),但这样就好了吗?并不是,因为当你用测试数据去验证模型的时候,就会发现预测值还是和真实值相去甚远(测试集上高偏差)。所以说我之前的观念(划删除线的地方)是错的,看这篇文章就清楚了。
image.png

这里有篇论文,等我再遇到偏差方差问题时看看。

训练集、验证集和测试集

以前我也知道有这三个数据集,但是不明白为什么非要分出验证集,现在大概懂了。如果只有训练集和测试集,我们用训练集来训练模型,用测试集来调整模型,那对于训练集和测试集之外的数据,也就是完全没见过的数据,模型可能并不会表现得很好。所以我们从训练集中分出一个验证集(验证集不参与模型的训练),然后用训练集训练模型,用验证集来微调模型,用测试集来测试模型,结果反映的就是模型在未见过的样本上的性能了。但是很难控制自己不根据测试集再来调整模型,如果又根据测试集调整了,那就和没分验证集一样了。

第十二课————ML Lecture 12: Semi-supervised

)
这节课讲了半监督,而且半监督在NLP中貌似还用的挺多的,视频中讲了几个方法:

  • self-training,附几篇讲解,还没有深入为什么self-training会work
    • 一文概览能生成代理标签的半监督学习算法
    • 半监督学习之self-training
  • Low-density Separation
    • Entropy-based Regularization
    • Semi-supervised SVM
  • Smoothness Assumption
  • Graph-based Approach

Adversarial Learning(忘了多少课了)

image.png

新增课程

Anomaly Detection(异常检测)

将数据分为正常值和异常值,用正常值的训练集来训练一个模型,模型的输出就是分类的概率。给模型一个新的输入,若输出值大于某个阈值,则属于正常值,反之,属于异常值。
检测异常值的方法:

  • 普通的神经网络
  • 最大似然估计:通过已经观测到的数据,来推断什么样的参数使得产生这些数据的可能性最大,求得模型的参数
  • 自编码器:训练一个自编码器,使得输入和输出一模一样,这样的话,给该模型输入后,得到输出,比较输入和输出的相似性,若是正常值,会尽可能的像,若是异常值,则可能不像。

参考资料

[1] 线性回归
[2] 机器学习中正则化项L1和L2的直观理解
[3] 偏差(Bias)与方差(Variance)
[4] 机器学习泛化问题之偏差和方差
[5] Understanding the Bias-Variance Tradeoff

你可能感兴趣的:(李宏毅机器学习课程(持续更新。。。))