前面我们利用pytorch实现了基于机器学习中最基本的的线性回归和逻辑回归,下面我们就正式开始接触神经网络,神经网络一般可以看作是一个非线性模型,其基本组成单位为具有非线性激活函数的神经元,通过大量神经元之间的连接,使得神经网络成为一种高度非线性的模型。神经元之间的连接权重就是需要学习的参数,可以通过梯度下降方法来进行学习。以下内容参考和摘抄自廖星宇老师的《深度学习之pytorch》和邱锡鹏老师的《神经网络与深度学习》。
1. 神经元
神经元是构成神经网络的基本单元,也被称为感知器,本质是通过上一层的输入与权重相乘后求和,在经过非线性函数转换,得到下一层的输出。也就是说神经元由输入,权值,偏置,激活函数,输出组成。
假设一个神经元接受 d d d 个输入 x i {x_i} xi,用向量 x = [ x i ] x = [x_i] x=[xi] 来表示这组输入,并用 z z z 表示一个神经元所获得的输入信号 x x x 的加权和
z = ∑ i = 1 d w i x i + b = w T x + b z = \sum\limits_{i = 1}^d {
{w_i}{x_i} + b = {w^T}x + b} z=i=1∑dwixi+b=wTx+b
其中 w = [ w 1 , w 2 , ⋅ ⋅ ⋅ , w d ] w = [w_1, w_2, · · ·, w_d] w=[w1,w2,⋅⋅⋅,wd] 是 d d d 维的权重向量, b 属于偏置。其结构如下所示:
2. 激活函数
激活函数在神经元中非常重要的。下面我们介绍几种常用的激活函数,摘抄自《深度学习之pytorch》:
2.1 Sigmoid
函数定义:
∂ ( x ) = 1 1 + exp (