1、非线性假设(Non-linear Hypotheses)
无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
非线性分类的例子:
- 特征数大于100时,构建一个非线性的多项式模型,即便只采用两两特征的组合(?1?2+?1?3+?1?4+…+?2?3+?2?4+…+?99?100),也会有接近100*100/2=5000个组合而成的特征。
- 随着特征个数n的增加,二次项的个数大约以O(n2)的量级增长。
- 只考虑x12,x22直到x1002这些项,可以将二次项的数量大幅度减少,但是由于忽略了太多相关项,在处理类似于上图的数据时不可能得到理想的结果,可能拟合出一个椭圆状的曲线,肯定不能拟合出上图不规则数据集的分界线。
关于计算机视觉的例子:
- 当人眼看到一辆汽车时,计算机实际上看到的却是一个数据矩阵,它们表示像素强度值,即每个像素的亮度值。
- 以下要训练一个非线性分类器,区分汽车与非汽车:
1)挑出一些汽车图片和一些非汽车图片,从每幅图片中挑出一组像素点,在坐标系中标出这幅汽车的位置,在某一点上车的位置取决于像素点(pixel)1和像素点2的亮度。
2)用同样的方法取相同位置像素点,标出其他图片中汽车的位置。
3)然后再举一个关于汽车的不同的例子观察这两个相同的像素位置。
4)用特征向量X包含了所有像素点的亮度值。 - 假使采用的都是 50x50 像素的小图片,并且将所有的像素视为特征,则会有2500 个特征(像素点)
1)如果存储的是每个像素点的灰度值 (色彩的强烈程度),那么每个元素的值应该在0到255之间,因此这个问题中n=2500,可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车。
2)如果用的是RGB彩色图像每个像素点包含红、绿、蓝三个子像素那么n=7500。
3)如果要进一步将两两特征组合构成一个多项式模型,则会有约25002/2个(接近 3 百万个)特征。 - 普通的逻辑回归模型,不能有效地处理这么多的特征,这时候需要神经网络。
2、神经元和大脑(Neurons and the Brain)
3、模型表示 1 (Model Representation I )
大脑中的神经元: 树突(输入神经)—>神经元(做些计算)—>轴突(输出神经)—>下一神经元。
人工神经网络:
单个神经元:
- 上图是一个简单的模型,模拟神经元,可以将黄色圈看成类似于神经元细胞的东西,通过输入通道传递给它一些信息,经过神经元做一些计算,通过输出通道输出计算结果。
- 有时增加一个额外的节点 x0,这个节点称作偏置单位(bias unit)或偏置神经元,因为x0恒等于1,所以有时候会画出,有时不会画出,取决于它是否对例子有利。
- 在神经网络术语中,激励函数只是对类似非线性函数g(z)的另一个术语称呼,g(z)定义如上图。
- θ是模型的参数,也称为权重。
神经网络:
- 神经网络其实是不同神经元连接在一起的集合。
- 添加额外节点 x0 和偏度单元 a0,都为1。
- 上图为三层神经网络,第一层为输入层(Input Layer),最后一层称为输出层(Output
Layer),中间层成为隐藏层(Hidden Layers)。 - 引入一些标记法来帮助描述模型:
1)??(?) 代表第? 层的第 ? 个激活单元。即隐藏层的激励,所谓激励(activation) 是指由一个具体神经元读入计算并输出的值。
2)?(?) 代表从第 ? 层映射到第? + 1 层时的权重的矩阵,波矩阵(a matrix of waves),例如?(1)代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第 ? + 1层的激活单元数量为行数,以第 ? 层的激活单元数加一为列数的矩阵。例如:上图所示的神经网络中?(1)的尺寸为 3*4。
3)只要改变Θ就能得到不同的假设。
4、模型表示 2 (Model Representation II )
- z(1),z(2),z(3)定义如图。
- 未添加偏置时,z(2)和a(2)都是三维向量。
- 可以把输入层的输入x当成第一层的激励,所以可以定义a(1) = x,a(1)是一个向量,z(2) = θ(1)*a(1)。
- 添加偏置后,z(2)和a(2)都是四维向量。
- 计算h(x)的过程也称为前向传播(forward propagation),即从输入层到隐藏层,再到输出层依次计算激励的过程。
把左半部分遮住:
- 图中剩下的部分看起来很像逻辑回归,ℎ?(?) = ?(?10(2)?0(2) +?11(2)?1(2)+ ?12(2)?2(2) + ?13(2)?3(2))。
- 只观察上下标蓝色的部分,看起来非常像标准的逻辑回归模型,不同之处在于此处用的是大写的Θ而不是小写的θ,且逻辑回归的输入特征值是通过隐藏层计算的。
- 神经网络所做的就像逻辑回归,但是它不是使用x1,x2,x3作为输入特征,而是用a1,a2,a3作为新的输入特征,特征项a1,a2,a3是学习得到的函数输入值,具体来说,就是从第一层映射到第二层的函数这个函数由其他一组参数θ(1)决定。
- 如果在 θ(1) 选择不同的参数,有时可以学习到一些很有趣和复杂的特征,可以得到一个比使用原始输入x1,x2 或 x3 时得到的假设更好,也可以选择多项式项x1x2,x2x3等作为输入项,这个算法可以灵活地快速学习任意的特征项。
- 可以用其他类型的图来,表示神经网络中神经元相连接的方式,称为神经网络的架构,架构是指不同的神经元是如何相互连接的。
5、特征和直观理解 1 (Examples and Intuitions I )
神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、
逻辑或(OR)。
- 左图为右图简化版。
- 输入特征x1,x2为二进制, 只能取0或1两种取值。
- 需要学习一种非线性的决策边界来区分正负样本。
- 目标函数y等于x1 XOR(异或) x2,为真当且仅当这x1或者x2中有且仅有一个为1时,y为真。y也可以等于x1 XNOR(异或非) x2,即NOT(x1 XOR x2),这意味着在x1异或x2后再取反,即当它们同时为真或者同时为假的时,y等于1。
- 用XNOR作为例子比用NOT作为例子结果会好一些,但这两个其实是相同的。
- 用上图一个神经网络表示 AND 函数,ℎ?(?) ≈ x1 AND x2。
- 其中?0 = −30,?1 = 20,?2 = 20,输出函数ℎ?(?)即为:ℎ?(?) =
?(−30+20?1+20?2)。x1,x2分别为1和0时代入其中。 - ?(?)的图像与真值表如图。
- 上图一个神经网络表示 OR 函数,ℎ?(?) ≈ x1 OR x2。
- 原理同AND函数。
6、样本和直观理解 2 (Examples and Intuitions II )
二元逻辑运算符(BINARY LOGICAL OPERATORS)当输入特征为布尔值(0 或 1)时,可以用一个单一的激活层作为二元逻辑运算符,表示不同的运算符只需要选择不同的权重即可。
- 这实际上计算的就是“非x1”函数,计算逻辑非运算总体思路是:在希望取非运算的变量前面放上一个绝对值大的负数作为权值。
- 利用神经元来组合成更为复杂的神经网络,以实现更复杂的运算XNOR 功能(输入均为1或均为0时为真),即:XNOR = (x1 AND x2) OR((NOT x1)AND(NOT x2))。
- 首先构造一个能表达x1 AND x2部分的神经元,如红色线条。
- 然后构造一个能表达(NOT x1)AND(NOT x2)部分的神经元,如青色线条。
- 最后将表示 AND 的神经元和表示(NOT x1)AND(NOT x2)的神经元,用表示 OR 的神经元进行组合,如绿色线条。
- 最终得到一个能实现 XNOR 运算符功能的神经网络,真值表如上图。
- 神经网络可以计算较复杂函数的某种直观解释:当层数很多的时候,有一个相对简单的输入量的函数作为第二层,而第三层可以建立在此基础上来计算更加复杂一些的函数,然后再下一层又可以计算再复杂一些的函数。
- 输入区域(如图单个9)表示的是手写字符,它们将被传递给神经网络这一列数字表示通过该网络第一个隐藏层运算后特征量的可视化结果,因此通过第一个隐藏层可视化结果显示的是探测出的不同特征不同边缘和边线这是下一个隐藏层的可视化结果。(隐藏层显示效果如图三列9)
- 对于手写数字识别来说,所输入的图像或者原始的像素点通过第一个隐藏层计算出一系列的特征,再通过下一个隐藏层计算出更复杂的特征,然后往下更复杂,最后这些特征被用于逻辑回归分类器的最后一层来准确的预测出神经网络所看到的的数字。
7、多类分类(Multiclass Classification)
对于多分类问题,如训练一个神经网络算法来识别路人、汽车、摩托车和卡车,可以通过设置多个输出值来实现:输出层四个神经元分别用来表示四类,也就是每一个数据在输出层都会出现[? ? ? ?]?,且 ?,?,?,?中仅有一个为 1,表示当前类。