《深度学习入门》—— 斋藤康毅著
神经网络的结构
1. 符号说明
输入层与第一层隐含层之间的符号表示以及说明:
注意权重符号的表示,上标表示层,下标表示神经元编号
通常网络带有偏置b,因此网络结构变成:
2. 数学表示
图3-17的 a1
(
1
)
^{(1)}
(1)通过加权信号和偏置的和,按如下方式进行计算。
如果写成矩阵的形式,则为:
其中,各矩阵可以写成:
注意:输入X是一行,表示为一维矢量/数组,说明输入有2个;
权重W是二维数组,每一列代表一个神经元“发出的”权重。因此行数为上一层节点数,列数为本层节点数,如例子中所示为2*3数组,则表示上层有2个节点,本层有3个神经元;
偏置B是一维矢量/数组,个数与W的列数相等,也就是本层有3个神经元,则偏置个数也为3。
A表示本层的输出(非最终输出,还需要经过激活函数才是真正的输出),也是下一层的输入,相当于下一层的X,所以形式与X一样,为一维矢量/数组,个数为本层神经元个数,本例中为3。
利用python编程,代码如下:
X = np.array([1.0, 0.5])
W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
B1 = np.array([0.1, 0.2, 0.3])
print(X.shape) # (2,)
print(W1.shape) # (2, 3)
print(B1.shape) # (3,)
A1 = np.dot(X, W1) + B1
3. 激活函数
上述表示并不完整,神经元的真正输出并不是上层的简单加权和,而有可能是非线性的,需要经过激活函数。完整的神经元网络图如下:
图中由a到z中间经过激活函数h(),z为神经元最终的输出。
激活函数有多种,sigmoid函数,阶跃函数,ReLU函数,等
3.1 sigmoid函数
3.2 阶跃函数
x>0, 输出即为1,反之为0
3.3 ReLU函数,rectified linear unit
图形表示:
4. 输出层函数
恒等函数和softmax函数
4.1 恒等函数
4.2 softmax函数
softmax函数在使用时需要特别注意“溢出”问题,因此可以采用改进的表达式:
C’一般选择输入信号中最大的值。