9.神经网络学习
9.1非线性假设
线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
假如我们只选用灰度图片,每个像素则只有一个值(而非 RGB 值),我们可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车。
假使我们采用的都是 50x50 像素的小图片,并且我们将所有的像素视为特征,则会有2500 个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有约25002/2个(接近 3 百万个)特征。普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络。
9.2神经元与大脑
如果人体有同一块脑组织可以处理光、声或触觉信号,那么
也许存在一种学习算法,可以同时处理视觉、听觉和触觉,而不是需要运行上千个不同的程序,或者上千个不同的算法来做这些大脑所完成的成千上万的美好事情。也许我们需要做的就是找出一些近似的或实际的大脑学习算法,然后实现它大脑通过自学掌握如何处理这些不同类型的数据。在很大的程度上,可以猜想如果我们把几乎任何一种传感器接入到大脑的几乎任何一个部位的话,大脑就会学会处理它。
9.3模型表示1
人的神经元有输入,计算,输出功能类似人的神经元,我们设计出了类似于神经元的神经网络。
神经网络建立在很多神经元之上,每一个神经元又是一个学习模型(这些神经元也叫激活单元)。神经元采纳一些特征作为输入,并且根据本身特征提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被成为权重(weight)。
其中𝑥1, 𝑥2, 𝑥3是输入单元(input units),我们将原始数据输入给它们。
𝑎1, 𝑎2, 𝑎3是中间单元,它们负责将数据进行处理,然后呈递到下一层。
最后是输出单元,它负责计算ℎ𝜃(𝑥)。
神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。上图为一个 3 层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit)。以0为下标
在上图中,先三行𝜃组成𝜃(1)的矩阵,是3*4的,从第j层到第j+1层的映射矩阵的维数,行数:第j+1层有多少行;列数:第j层的行数+1。
最后一行是𝜃(2)的矩阵,是从隐藏层到输出层的矩阵。
总结,定义神经人工网络,输入,输出,映射。将参数矩阵定义为𝜃,则改变矩阵会有不同的映射。
9.4模型展示2
我们可以知道:每一个𝑎都是由上一层所有的𝑥和每一个𝑥所对应的决定的。(我们把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION ))
利用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值:
其实神经网络就像是逻辑回归,只不过是输入向量变成了中间层
9.5特征和直观理解
为了表示这样的分布,我们想到用XOR(异或)函数。神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。我们可以用这样的一个神经网络表示 AND 函数:
OR函数类似,NOT函数类似
将下边三个整合起来,
最终得到一个非线性的函数计算XOR函数。
9.6多类分类
当我们有不止两种分类时(也就是𝑦 = 1,2,3….),也要有解决办法。
我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有 4 个值。例如,第一个值为 1 或 0 用于预测是否是行人,第二个值用于判断是否为汽车。