机器学习之神经网络
无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
所以我们引入神经网络。
一些神经网络术语
上图为神经元,神经元处理信号后,通过激活函数处理以产生神经元的输出。(常用的有Sigmoid函数、阶跃函数等)
下图为一个3层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):
逻辑函数的一些例子
下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND):
下图的神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR):
下图的神经元(两个权重分别为 10,-20)可以被视为作用等同于逻辑非(NOT):
XNOR:
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。例如我们要实现XNOR 功能(输入的两个值必须一样,均为1或均为0),即
$$
\text{XNOR}=( \text{x}_1, \text{AND}, \text{x}_2 ), \text{OR} ( ( \text{NOT}, \text{x}_1)\text{AND} ( \text{NOT}, \text{x}_2))
$$
首先构造一个能表达$( \text{NOT}, x_1 ) AND ( \text{NOT}, x_2 )$部分的神经元:
然后将表示 AND 的神经元和表示$( \text{NOT}, \text{x}_1 ) \text{AND} ( \text{NOT}, \text{x}_2 )$的神经元以及表示 OR 的神经元进行组合:
神经网络的一些定义
假设神经网络的训练样本有$m$个,每个包含一组输入$x$和一组输出信号$y$,$L$表示神经网络层数,$S_I$表示每层的neuron个数($S_l$表示输出层神经元个数),$S_L$代表最后一层中处理单元的个数。
将神经网络的分类定义为两种情况:二类分类和多类分类,
二类分类:$S_L=0, y=0, or, 1$表示哪一类;
$K$类分类:$S_L=k, y_i = 1$表示分到第$i$类;$(k>2)$
代价函数
记
$$
h_\theta(x)\in \mathbb{R}^{K}{({h_\theta}(x))}_{i}={i}^{th} \text{output}
$$
则:
$h_\theta(x)$与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularization的bias项处理所有参数的平方和。