机器学习是什么?
机器学习的任务
回归Regression
分类Classification
创造学习Structed Learing
机器学习怎么找这个函数
定义含未知参数的函数
定义loss损失函数
定义优化器optimization
写出一个更复杂的有未知参数的函数
sigmoid
基本推理过程
sigmoid函数介绍
继续推导
ReLU线性整流函数
视频链接
https://www.bilibili.com/video/BV1Wv411h7kN/?p=3&spm_id_from=pageDriver&vd_source=ef8c99c8c4165aea8f811dafa9772ecd
https://www.bilibili.com/video/BV1J94y1f7u5/?p=3&vd_source=ef8c99c8c4165aea8f811dafa9772ecd
机器学习就是找一个我们写不出来的函数,但是能够实现用户想要的结果。这个函数的输入可以是向量、矩阵以及序列(连续的段落以及语音信息),输出可以是单个数值(相对应的问题称之为回归regression)、类别(分类问题)、序列
机器学习的输出是一个数值
给出基本的选项,对给定的输入按照这些基本的选项进行分类
根据给定输入,从无到有创造出一个东西
猜测这个函数的形式,进行定义
y = f ( x ) y=f(x) y=f(x)
这个f即可称为模型model,此时,x称作特征值feature,y为预测值predict,y的真实值称为标签label
y = b + w x , y = b + ∑ j w j x j y=b+wx,y=b+ \sum_{j} w_jx_j y=b+wx,y=b+j∑wjxj
未知参数
偏置量bias
权重weight
可以给定的参数:超参hyperparameter
loss损失函数是关于未知参数的一个函数,是来表示当前这个未知参数的好坏优劣
具体可以定义loss值为下列公式
l o s s = 1 n × ∑ i = 1 n e f i loss=\frac1 n \times \sum_{i=1}^ne_{fi} loss=n1×i=1∑nefi
M A E : e f i = ∣ y i − y ′ ∣ 或 者 是 M S E : ( y i − y ′ ) 2 MAE:e_{fi}=|y_i-y' | 或者是 MSE:(y_i-y')^2 MAE:efi=∣yi−y′∣或者是MSE:(yi−y′)2
优化器optimization是用来找一组最好的w与b,这个最好的w与b会使loss也最低(一般找到的标准是此时loss关于w的函数的斜率为0)
课程一般是采用Gradient Descent方法:
随机选取初始值,设置迭代次数
计算该点的斜率 w对loss的偏导,若斜率为负,则在该点左侧loss值更大,若斜率为正,则在该点右侧loss值更大
w的迭代公式:其中 的η为学习率,是人为设置的(人为设置的参数称之为hyper parameters超参数)
w i + 1 = w i − η × ∂ l o s s ∂ w ∣ w = w 0 w_{i+1}=wi-\eta \times \frac{\partial loss}{\partial w}|_{w=w^0} wi+1=wi−η×∂w∂loss∣w=w0
- 使用Gradient Descent会有全局最优解和局部最优解,但这并不是Gradient Descent的真正问题
- 多参数的Gradient Descent应用需要进行分别对loss的微分,然后分别进行更新
这里之前设置的含未知参数的方程最后得到的是liner model,但是liner model过于简单,难以描述一些复杂的情况,这种来自于model的限制叫做model bias
未 知 函 数 = 常 量 + 若 干 个 s i g m o i d 的 和 未知函数= 常量+ 若干个sigmoid的和 未知函数=常量+若干个sigmoid的和
所有的折线段Liner Curves都可以用常量+若干个sigmoid来表示。而对于所有的连续曲线段也都可以用这样的方法去近似。转折点越多,需要的sigmoid越多,越容易过拟合。
上述的蓝色折线段称之为Hard sigmoid,用sigmoid去逼近
sigmoid函数的取值是在0和1之间,其基本公式如下:
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1} {1+e^{-x}} sigmoid(x)=1+e−x1
我们所用到的sigmoid是** c sigmoid(b+wx)**,即
y = c 1 1 + e − ( b + w x i ) y=c \frac {1} {1+e^{-(b+wx_i)}} y=c1+e−(b+wxi)1
回到最初的推导:
当特征值x取前一天进行推导,那么红线的最终方程如下:
x i + 1 = b + ∑ i = 1 n c i s i g m o i d ( b i + w i x i ) x_{i+1}= b + \sum_{i=1}^{n} c_i sigmoid (b_i+w_ix_i) xi+1=b+i=1∑ncisigmoid(bi+wixi)
当特征值x取前面多天进行推导,那么红线的最终方程如下:
x i + 1 = b + ∑ i = 1 n c i s i g m o i d ( b i + ∑ j n w i j x j ) x_{i+1}= b + \sum_{i=1}^{n} c_i sigmoid (b_i+ \sum_{j }^{n}w_{ij}x_j) xi+1=b+i=1∑ncisigmoid(bi+j∑nwijxj)
y = b + c T a , a = s i g m o i d ( r ) , r = b + W x y=b+ c^T a, a=sigmoid(r), r=b+Wx y=b+cTa,a=sigmoid(r),r=b+Wx其中x为特征值(单个值或多个值的向量),W的行数即表示有多少个sigmoid是超参数hyperparameter,W的列也是超参数,表示用前多少天的。剩下的均为未知参数,可以将W、内外b、C拉直结合成一个向量表示未知参数θ.
紧接着定义loss,以及optimization得到最优的参数θ。其中在最优化时求除的偏导向量叫做gradient
为了减少特征值太多计算困难,我们将特征值随机划分成若干个batch,每次取一个batch中的样本进行一次gradient的计算并更新θ,称为一次update。算完一次全部的batch称为一次epoch。
这里的epoch数和batch大小均是超参数
也可以用Relu来进行复杂函数的表示
其基本公式为:
f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
我们用到的表示形式是:用2个relu可以表示一个sigmoid
f ( x ) = c m a x ( 0 , b + w x ) , f ( x ) = c m a x ( 0 , b + ∑ j w j x j ) f(x)=cmax(0,b+wx),f(x)=cmax(0,b+\sum_jw_jx_j) f(x)=cmax(0,b+wx),f(x)=cmax(0,b+j∑wjxj)
Relu与sigmoid都是激活函数 Activation function。 可以多做几次求a的过程,设置多个隐含层。
过拟合over fitting:随着网络的复杂,训练集的loss降低而测试集的loss却增大(隐含层过多,激活函数过多都会导致over
fitting)