8、神经网络表述
8.1非线性假设
我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
8.2神经元和大脑
如果我们能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法,也许这将是我们向人工智能迈进做出的最好的尝试。
8.3模型表示1
下图为一个 3 层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):
𝑎𝑖(𝑗) 代表第𝑗 层的第 𝑖 个激活单元。𝜃(𝑗)代表从第 𝑗 层映射到第𝑗 + 1 层时的权重的矩阵;其尺寸为:以第 𝑗 + 1层的激活单元数量为行数,以第 𝑗 层的激活单元数加一为列数的矩阵。𝜃(1)的尺寸为 3*4。
每一个𝑎都是由上一层所有的𝑥和每一个𝑥所对应的决定的。(我们把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION )) 把𝑥, 𝜃, 𝑎 分别用矩阵表示,我们可以得到𝜃 ⋅ 𝑋 =a
8.4模型表示2
利用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值:
我们令 𝑧(2) = 𝜃(1)𝑥,则 𝑎(2) = 𝑔(𝑧(2)) ,计算后添加 𝑎0(2) = 1。
我们令 𝑧(3) = 𝜃(2)𝑎(2),则 ℎ𝜃(𝑥) = 𝑎(3) = 𝑔(𝑧(3))
𝑧(2) = 𝛩(1) × 𝑋𝑇 ,𝑎(2) = 𝑔(𝑧(2))
我们可以把𝑎0, 𝑎1, 𝑎2, 𝑎3看成更为高级的特征值,也就是𝑥0, 𝑥1, 𝑥2, 𝑥3的进化体,所以这些更高级的特征值远比仅仅将 𝑥次方厉害,也能更好的预测新数据。
8.5特征和直观理解
我们可以认为第二层中的特征是神经网络通过学习后自己得出的一系列用于预测输出变量的新特征。
我们可以用这样的一个神经网络表示 AND 函数:
其中𝜃0 = −30, 𝜃1 = 20, 𝜃2 = 20 我们的输出函数ℎ𝜃(𝑥)即为:ℎ𝛩(𝑥) = 𝑔(−30 + 20𝑥1 +20𝑥2)
OR 与 AND 整体一样,区别只在于的取值不同。
8.6样本和直观理解2
为了表示不同的运算符,我们只需要选择不同的权重即可。
下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND):
下图的神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR):
下图的神经元(两个权重分别为 10,-20)可以被视为作用等同于逻辑非(NOT):
实现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即
然后将表示 AND 的神经元和表示(NOT x1)AND(NOT x2)的神经元以及表示 OR 的神经元进行组合:
按这种方法我们可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。这就是神经网络的厉害之处。
8.7多类分类
当我们有不止两种分类时,输入向量𝑥有三个维度,两个中间层,输出层 4 个神经元分别用来表示 4 类,也就是每一个数据在输出层都会出现[𝑎 𝑏 𝑐 𝑑]𝑇,且𝑎, 𝑏, 𝑐, 𝑑中仅有一个为 1,表示当前类。