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