学习内容:
8 神经网络
8.1 为什么用神经网络
当只有两个特征时(x1、x2),使用sigmoid函数得到的结果还可以,因为可以把x1、x2的所有组合都包含到多项式中。但当很多问题含有很多特征,不止两项的时候,则这种方法就不是很适用,结果可能过拟合,运算量也过大。
- 例:汽车识别
当计算机识别图像时,计算机看到的是一个数据矩阵或者是表示像素强度值的网络,计算机视觉问题就是根据像素点亮度矩阵来说明图片中表示的是什么
再取一些图片(包含汽车和非汽车),作为样本输入分类器,根据像素点像素强度识别输出结果
(+表示是汽车,-表示非汽车),此时需要一个非线性假设尽量分开两类样本。假设图片为50X50,那么共有n=2500个像素点,样本矩阵x就表示每个像素的亮度(0-255)。
对于50*50像素的灰度图片,有2500个特征值。若是RGB三色图片是时,特征值达到7500,如果算上多次多项式,特征值约等于3百万,所以用之前的方法处理这么庞大的数据很难。
8.2 神经元与大脑
神经网络的起源:人们想设计出模仿大脑的算法。最近兴起的原因:神经网络计算量较大,随着现在计算机运行速度变快,才足以运行大规模的神经网络。
8.3 模型展示I
神经网络模仿了大脑中的神经元或者神经网络,神经元是一个计算单位,它从输入通道接受一定数目的信息,并做一些计算,然后将结果通过轴突传送给其他节点,或其他神经元,神经元之间也可以通过动作电位进行交流。
类似的,也可以定义一个模型来模拟神经元工作方式(单个神经元)
通常情况下,在输入的特征中,除了x1,x2,x3,还会增加一个x0,它被称为偏置单元或偏置神经元。但x0总=1,所以画不画取决于例子计算加上x0会不会方便。
- 在神经网络中用来指代非线性函数g(z)的叫做激活函数
- 神经网络中用权重指代θ参数
上面是单个神经元工作模式,但神经网络由多个神经元组成的集合,其分为三层,第一层为输入层,第二层隐藏层,第三层输出层。
符号解释:
①表示第j层第i个神经元或单元的激活项
②权重矩阵,它控制从某一层到紧邻的下一层(j→j+1)
每一个神经元的计算函数(sigmoid函数/激活函数)
如果第j层有个单元,j+1层有个单元,那么从j层到j+1层的映射()的维度是,比如θ(2)是3×4矩阵。
8.4 模型展示Ⅱ-----前向传播
从输入单元的激活项开始,进行前向传播给隐藏层,计算隐藏层的激活项,继续前向传播,并计算输出层的激活项 。
其中某个特定的神经元输入值为的加权线性组合,g(z)中的z是向量矩阵与x的乘积,此时就能将神经网络的计算向量化了。将特征x定义为由组成的向量,。其中定义为有所有z值组成的向量,即,若i=2,表示三维向量,接着向量化的计算,只需两步:①;②
在函数中,存在一个,此时需要额外加一个偏置单元令其等于1
其他神经网络架构:中间可能不止一层隐藏层,每一层计算的特征都越来越复杂。
8.5 例子(非线性分类例子:XOR/XNOR)
神经网络可以学习复杂的非线性假设模型的例子
x1和x2都是二进制(只能取0或1),此时要通过计算找出决策边界。
输出只有两种算法:①(表示两个特征值中恰好只有一个为1,输出为真)
②(两个输入值同时为真同时为假,输出为真)
- AND
通过给出的权重计算出z进而通过图像看出的大概取值,得出只有x1,x2同时为1时,输出为真。
- OR
与AND同理
- (NOT x1)AND(NOT x2)
NOT即取反,后面的计算和AND和OR相同
- x1NORx2
分成三部分:①x1 AND x2; ②(NOT x1) AND (NOT x2); ③x1 OR x2
这三部分分别作为隐藏层,先计算出①,再②,再使①、②的结果做OR运算,输出结果