机器学习详解-第一章-机器学习基础-1.2学习笔记-[DataWhale X 李宏毅苹果书 X AI夏令营]

上一次的案例中的三个步骤,我们将其统称为训练,我们获得的模型是根据已经有的参考资料获得的训练模型,但是实际上我们并不会限制于只使用前一天的数据来预测下一天,我们也可以使用前一周的数据来预测下一天,就有了以下模型:

y=b+\sum^7_{j=1}w_jx_j

当然,还可以更多,比如取前四周的:

y=b+\sum^{28}_{j=1}w_jx_j

但是多不一定代表好,当数量过多的时候就会出现其他的情况,可能会影响到我们的结果,这点以后再讨论。。

以上讲的名为Linear models(线性模型)

实际上多数情况我们都是属于比较复杂的函数曲线,对于此函数,我们一般将其分解为多段函数的相加,如下图红色曲线可以由多个蓝色的曲线相加合成。我们稍微严谨一点,就是说红色的曲线可以看作是一个常数加上一群Hard Sigmoid函数。

Hard Sigmoid函数的特征是:当输入的值在x轴上小于一个阈值,大于另外一个阈值的时候,中间有一个斜坡。用人话说就是两边是水平的,中间是一个斜坡链接了两边。

而对于相对复杂的曲线,我们想使用Hard Sigmoid来表示会很困难,所以实际上我们会使用Sigmoid函数来逼近这个Hard Sigmoid函数,以下为Sigmoid函数的表达式:

y=c\frac{1}{1+e^{-(b+w{x_1})}}=c\,sigmoid(b+wx_1)

对于该函数,当x很大的时候,为1,x很小的时候,为0。该函数的形状就是类似于S,所以称为S型函数,即Sigmoid函数。

这里修改b,会让函数左右移动。修改w,会改变函数的斜率。修改c,这是改变其高度。

由此,我们将这些拆分的函数都写成Sigmoid函数,最后合成在一起,得到一个公式:

y=b+\sum_{i=1}c_i\,sigmoid(b_i+w_ix_1)

我们可以继续扩充,上述我们有一个式子为:

y=b+\sum_{j}w_jx_j

同样的道理,如果我们将其写成Sigmoid函数,最后合成在一起,可以得到以下式子:

y=b+\sum_{i=1}c_i\,sigmoid(b_i+\sum_j w_{ij}x_1)

这里相当于每次先把j的部分进行计算,然后对每个i都有相应的几个j值,重复运算,我们假设j为1,2,3.而i也为1,2,3,画图来表示:

我们还可以结合图形来表示这个道理,比如最上面一个红色的函数被拆解为了三个不同的蓝色函数,假设红色函数整体被分为三个部分x1,x2和x3,蓝色函数分别是这个x1,x2,x3,每一个i就代表其中任意一个蓝色的函数,而wij指的是第i个Sigmoid函数中对第j个特征的权重,也就是说i表示此时考虑的是第i个Sigmoid函数。这里就会出现r1,r2,r3,其实每一个r就是指一个i下的Sigmoid函数。

这里的r1,r2,r3分别是每个i下算完三次j的形式,我们观察该形式,可以写成矩阵的形式:

由此完毕,同时我们发现这些式子中有着大量的参数,为了方便说明,我们设一个向量θ融合所有的参数,将损失函数则称为L(θ)

\theta= \begin{bmatrix} {\theta_1}\\ {\theta_2}\\ {\theta_3}\\ ... \end{bmatrix}

选择一个初始值θ^0随后对每一个未知的参数计算微分:

g= \begin{bmatrix} \frac{\partial L}{\partial {\theta_1}}|_{\theta=\theta^0}\\ \frac{\partial L}{\partial {\theta_2}}|_{\theta=\theta^0}\\ \frac{\partial L}{\partial {\theta_3}}|_{\theta=\theta^0}\\ ... \end{bmatrix}

这里的g表示的就是gradient,我们一般会将该式子写作:

g=\nabla L(\theta^0)

倒三角指的是对后面所有的都算微分,θ0指在该处计算。

由此我们可以得到以下式子:

\begin{bmatrix} \theta_1^1\\ \theta_2^1\\ ... \end{bmatrix} = \begin{bmatrix} \theta_1^0\\ \theta_2^0\\ ... \end{bmatrix} -\begin{bmatrix} \eta\frac{\partial L}{\partial \theta_1}|_{\theta=\theta^0}\\ \eta\frac{\partial L}{\partial \theta_2}|_{\theta=\theta^0}\\ ... \end{bmatrix}

也就是

\theta^1=\theta^0-\eta g

我们找最优的θ的时候,我们会将整体的数据集N划分为多个batch,这里每次的g分别由一个对应的batch值来计算得到,每次从一个batch得到的数据往下一个batch数据变化叫做一次update更新,当我们把所有的batch更新完之后,这一流程叫做epoch,而决定batch的参数为batch size。

ReLU:(和Sigmoid同等地位)写法为c max(b + wx),如果拿去做函数预测的话则可以写成:

y=b+\sum_{2i}c_i\,max(0,b_i+\sum_jw_{ij}x_j)

这里注意求和的下方是2i,两个ReLU才可以合成一个Hard Sigmoid。这里,提到一个新的名词,SigmoidReLU都被称作为Activation Function激活函数。

每次获得的结果可以反复代入,进行多次的学习套娃。这里每一个Sigmoid和ReLU都是一个节点,被称作Neuron神经元,而这一整套则被称作为Neural Network神经网络。(由于时代背景,这个名称被搞臭了,后来神经元则被改为hidden layer隐藏层,神经网络则是改名为Deep Learning深度学习

随着隐藏层数的叠加,一般来说预测结果会越准,但是有时候层数过多会导致出问题,这种情况叫做Overfitting过度拟合,具体的错误研究我们会在下章进行讨论。

对于整个机器学习的框架我们最后综合一下:

训练过程主要分为三个步骤:

1.首先写出一个函数,这个函数有输入也有一些暂时未知的参数,假设这些参数为θ,输入的部分为x,该函数可以写成:

f_\theta(\mathbf{x})

2.然后我们需要定义损失函数,通过输入一组参数,来判断这一组参数的好坏:

L(\mathbf{\theta})

3.最后我们需要解一个优化的问题,我们需要找一个θ,让损失的值越小越好,这里我们假设θ*就是最小的θ,我们解的方程是:

\theta^*=argmin_\theta\,L

我们将得到的θ*代入,就可以得到用来做测试训练的函数:

f_{\theta^*}(\mathbf{x})

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值