机器学习笔记(持续更新)

2021课程地址:https://speech.ee.ntu.edu.tw/\~hylee/ml/2021-spring.html

2022课程地址:https://speech.ee.ntu.edu.tw/\~hylee/ml/2022-spring.php

这一节主要为机器学习中的监督式学习的回归问题

1、线性模型机器学习的三个步骤

(1)function with unknown(找一个带有未知参数的函数)

现找一个我们都所熟悉的简单线性函数 y = b + wx

其中b、w为未知参数,我们称b为bias,称w为weight;x为feature。

(2)Define loss function from Training Data(定义损失函数)L(b,w)

假设现在我们已经获取了大量的数据,而我们就是要从大量的数据中找到我们的损失函数。现在我们的目的就是求到b和w,是我们的损失函数最小。

首先我们可以随便选取一组b、w,找到一个x带入,得到y',然后我们与实际x处y的值进行相减,得到差值e,然后我们把我们得到的差值e的绝对值(MAE)累加,得到损失函数

(3)optimization(最优化)

我们不断的去改变b和w的值,使损失函数最小。用到的方法是梯度下降法(Gradient Descent),我们通过学习率(learning rate)控制学习的速度。至于什么时候停止,一种是梯度为0,一种是你不想训练了,这取决于你的迭代次数。

当我们做完上述工作并不是我们的工作就完成了,我们可以通过实验,对比得到的数据,不断地去改进我们的模型。

以上是一种特别简单的线性回归模型,但是我们现实生活中模型是非常复杂的,我们怎么都找不到合适的线性模型解决我们的问题,因此我们就将模型改进,进一步得到分段线性模型。

2、分段线性模型机器学习的三个步骤

其实步骤还是和线性模型一样

(1)function with unknown(找一个带有未知参数的函数)

All Piecewise Linear Curves = content + surn of a set of

上面这个公式的意思就是,将一个常数和若干个折线相加起来就可以得到分段线性模型了

比如这张图,我们想要得到红色的这一条线,我们就使用所有蓝色的线相加起来就可以了,但是问题又来了如果我们碰到曲线这样的怎么办呢?

我们就可以把曲线分成有若干个折线组成的,而我们分的越多就近似为曲线了

但是由于考虑到我们的折线不是很容易表达,我们又把折线近似为曲线,如下图:

这个曲线称为Sigmod Function

其中w、b、c均为未知参数,x为feature。w:change slopes(斜率)、b:shift(平移)、c:change height(高度)// 公式多写了一个c

然后我们可以使用矩阵的方式表达我们下面的这个式子

当然我们去更多的值,不局限于3项

我们可以将用矩阵表示的形式简化为以下公式

(2)Define loss function from Training Data(定义损失函数)L()

损失函数的由来和线性模型相同,得到损失函数的目标也相同,都是找到一组参数使损失函数最小(我们把所有的未知参数统称为

(3)optimization(最优化)

我们将每次得到的损失函数进行微分,就得到了梯度,然后我们将得到的微分值减去梯度乘于学习率得出下一步我们下一步应该往哪里走,进一步得到我们新的损失函数,然后我们可以据此一直循环,就是进行迭代,迭代到你不想迭代为止。

我们还可以将我们得到的数据进行随机分割,分割成的每一组数据叫做batch,然后我们用一组数据对我们的模型进行训练,再用下一组数据进行训练,两组数据训练的递进叫做Update,当我们把所有的数据都完成训练,我们叫做Epoch。

上述介绍了我们如何使用sigmod函数进行机器学习,是否还记得我们曾经说过使用Sigmod进行机器学习是比较简单的,那我们可不可以使用Hard Sigmod进行机器学习训练呢?当然也是可以的,就是BeLU。

3、Rectified Linear Unit(ReLU)

如下图,将第二个图的两个折线相加就可以得到我们的Hard Sigmod:

以上两个函数统称为Activation function (激活函数),当然含有其他的激活函数。

得到的公式就是

最后来总结以下,我们每进行一次的学习称之为1个layer,然后我们用我们训练后的模型再一次进行训练,一直训练,逐次深入,知道不想训练为止,整个过程就叫做深度学习,也叫做神将网络。

但有的时候并不是训练的次数越多就越好,有时候layer次数的增加会带来使误差增大的效果,这种情况我们叫做overfitting。

这只是一个学习笔记,不做任何的商业用途,课程都是基于李宏基老师的2021/2022春机器学习而来,其中漂亮的图都来自课程截图,如有侵权,联系我,我将删除。

相关推荐
车轮滚滚__1 小时前
uniapp对接unipush 1.0 ios/android
笔记
云边有个稻草人4 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
冷眼看人间恩怨12 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
Hejjon18 小时前
SpringBoot 整合 SQLite 数据库
笔记
西洼工作室20 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.20 小时前
Webpack学习笔记(2)
笔记·学习·webpack
新手上路狂踩坑21 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
stm 学习ing1 天前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉1 天前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
bohu831 天前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口