神经网络
1.1 感知机
你可以把感知机(Perceptron)通俗理解为一个函数,向函数
输入变量
,函数会输出
。哪函数
是如何做到的呢?很简单,我们为每个
分配一个权重
,根据
大于或小于阈值,输出不同的结果。其公式如下:
我们设:阈值,则上式可以简化一下:
通俗解释下:一个女生选男票,代表身高,
代表性格,
代表长相。如果女生更青睐性格好的男生,那么
对应的
取值就会大,不在乎长相,那么
对应的
取值就会小。同时
衡量了女生想谈恋爱的程度,
越大说明女生越渴望恋爱。反之亦然。
![](https://img.haomeiwen.com/i16130812/9e358186f36c10fc.png)
1.2 S型神经元
我们对上面的,做一下处理有:
,其中
为:
,也叫sigmoid function。于是有:
你可能会问我,为什么要这样做?因为sigmoid function 可以将的结果压缩到
,
,
。并且sigmoid function 是一个可导函数,我们可以用导数进一步研究输出值与
之间的关系。
![](https://img.haomeiwen.com/i16130812/2f4a4d3d98a29a92.png)
1.3 神经网络的架构
![](https://img.haomeiwen.com/i16130812/9fbaeeb6dc73114d.png)
其中hidden layer中每一个圈都代表一个S型神经元。这样的一个神经网络中我们有输入值和输出值
。我们希望有⼀个算法,能让我们找到
(m为上图中的箭头数)和
(k为hidden layer,output layer神经元个数),以⾄于⽹络的输出
能够拟合所有的训练输⼊
。为了量化我们如何实现这个⽬标,我们定义⼀个代价函数 :
![](https://img.haomeiwen.com/i16130812/7abdcf138c88f431.png)
我们的目标很明确就是寻找对应所有输入使函数
取最小值时的
。
1.4梯度下降法
分析一下上面的函数(loss function):
是输入模型的所有样本,
为对应的标签,两者都是不变的。所以
的大小只与
有关。于是便想:我们可不可以逐步探索,调整
使
的取值越来越小?于是有了梯度下降法(Gradient descent)。
对于一个函数,梯度下降的主要思想:
1.初始化。
2.不断改变的值,使
不断减小至最小值。
梯度下降的过程如图所示:
![](https://img.haomeiwen.com/i16130812/5fc72d32478dbd96.png)
现在你可能会说:鬼知道应该怎么调整会使
变小。这时我们便要使用微积分工具了:
我们要使变小,即
。于是有
。我们取
,
,
。
带入上式于是有。好了我们只要按照以下规则更新
。就会使
变小。
。
重复上述过程,直到的保持稳定。注意:
的值要同时更新,切记不要求一次导更新一次!
2.1