【西瓜书Chapter5】神经网络

本文探讨了线性模型在处理复杂问题时的局限性,并提出使用sigmoid函数进行分段拟合,通过调整sigmoid参数来构建更复杂的function。介绍了如何用sigmoid组合逼近任意曲线,并展示了在多特征情况下如何构建此类模型。同时,阐述了损失函数的定义及参数优化过程,以找到最佳模型参数。
摘要由CSDN通过智能技术生成

线性模型对于实际问题来说有点过于简单了,我们可以根据wb调整位置,但它永远都只是一条直线。因此,需要一些更复杂的模型去拟合我们想要得到的function。

 对于下面这一条红色的曲线,我们可以分段考虑,这样便很容易将其拆解为一个常数和一系列折线的组合。

在第一段红色曲线上,我们可以用起点为零,具有相同斜率的折线1去拟合,第二段、第三段类似。由此可见,只要有足够多的折线,便可以拟合出我们想要的function。

即使对于一条曲线,我们也可以对它进行采样,再将各点连起来,变成一条分段函数,然后使用多条折线。得到一个近似拟合的结果。

 那么,应该如何表示一条折线呢?

我们可以用一个sigmoid函数来逼近这条折线y=c\, \frac{1}{1+e^{-(b+wx_1)}},即

 要组合出一条曲线,就需要各式各样的sigmoid函数,我们可以通过调整sigmoid的参数b,w,c来制造各种不同形状的sigmoid,用各种不同形状的sigmoid,去逼近我们想要得到的function。

 现在,我们再次回到最开始的这条红色曲线,我们可以用一个常数和三个sigmoid来逼近。将他们相加便可得到以下式子:

y=b+\sum _i c_i\, sigmoid(b_i+w_ix_1)

本来我们是linear model:y=b+wx_1,它有非常大的限制,只能逼近一条直线,这个限制叫做model bias。为了减少model bias,我们引入了这个式子y=b+\sum _i c_i sigmoid(b_i+w_ix_1),只要代入各个不同的c,b,w,便可以组合出各种不同的function。

上面这种情况只有一个feature,现在对其扩展,当有多个feature时,我们的式子就变成了:

y=b+\sum_j w_j x_jy=b+\sum_i c_i \, sigmoid(b_i + \sum_j w_{ij} x_j ) 

其中,j代表feature的数目,i代表sigmoid的数目。

对于第一个sigmoid,我们有三个feature,x_1,x_2,x_3,它们对应权重w分别为w_{11},w_{12}, w_{13},其第一个下标表示第一个sigmoid,第二个下标分别表示第一、二、三个feature。

对于第二、三个sigmoid同理

为了简化function,我们分别用r_1,r_2,r_3表示sigmoid中的函数。

为了简化计算,我们可以用矩阵相乘进一步表示上式

至此,r可以化简为

接下来,我们令r_1,r_2,r_3分别通过sigmoid得到a_1,a_2,a_3。 

最后,我们令 a_1,a_2,a_3分别乘上c_1,c_2,c_3再加上b便得到了function y

现在来做一个总结,刚刚我们所做的一连串计算就是将输入特征向量\mathbf{x}乘上矩阵\boldsymbol{W},加上向量\boldsymbol{b}得到向量\boldsymbol{r};再由向量 \boldsymbol{r}通过sigmoid函数得到向量\boldsymbol{a},再用向量\boldsymbol{a}乘上\boldsymbol{C}^T加上标量b得到目标函数y

 有了新的model以后,我们进行Loss的定义。

对于这个模型,它的参数非常多,一个个列出过于麻烦,这里我们把这些参数全部拉直并

放在一个向量中,用\boldsymbol{\Theta }表示。

Loss function就变成了L(\boldsymbol{\Theta })。给定一组\boldsymbol{W},\boldsymbol{b},\boldsymbol{c}^T,b的值,把一组feature x_j代进去得到预测值y,和真实值\hat{y}做差得到误差e,所有的误差相加再求平均就得到了Loss。 

找到了Loss function,接下来便是optimization,要做的就是找到一个\boldsymbol{\Theta }^*呢?

首先我们要确定一个初始值,这里我们随机挑选一个\boldsymbol{\Theta }^0,接下来对每一个未知的参数计算微分。即L的梯度\boldsymbol{g}

\boldsymbol{g}=\begin{pmatrix} \frac{\partial L}{\partial \boldsymbol{\Theta _1}} \mid _{\boldsymbol{\Theta =\boldsymbol{\Theta ^0}}}\\ \frac{\partial L}{\partial \boldsymbol{\Theta _2}} \mid _{\boldsymbol{\Theta =\boldsymbol{\Theta ^0}}}\\ \vdots \end{pmatrix}

\boldsymbol{g}=\bigtriangledown L(\boldsymbol{\Theta ^0})

然后便开始更新参数。这与我们更新单个参数的方法是一样的。

 

整个更新便是不断迭代这个过程,直到\boldsymbol{g}满足我们所需要的精度,便得到了\boldsymbol{\Theta }^*

内容来自 李宏毅2021/2022春机器学习课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值