Andrew Ng Machine Learning 专题【Neural Networks】上

本文是Andrew Ng在Coursera上的机器学习课程笔记,专注于神经网络。内容涵盖神经网络解决非线性问题,如XOR,以及神经网络的前向传播过程。并介绍了如何使用神经网络进行二进制运算分类,如AND、OR和XOR问题的解决。还讨论了神经网络在多类分类问题中的应用,特别是在手写数字识别中的重要性。
摘要由CSDN通过智能技术生成

此文是斯坦福大学,机器学习界 superstar — Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记。力求简洁,仅代表本人观点,不足之处希望大家探讨。
课程网址:https://www.coursera.org/learn/machine-learning/home/welcome

Week 5:Neural Network_2 笔记:http://blog.csdn.net/ironyoung/article/details/48412631

 对于BP(backpropagation),以前写过心得以及资料的总结,最终利用C++实现了简单的BP神经网络。具体见这里:《C++从零实现BP神经网络》

Week 4:Neural Network

  1. 由XOR Problem想到

    1. 有一种经典的非线性问题:XOR,也就是异或。真值表如下:
      0 0 | 0
      1 0 | 1
      1 1 | 0
      0 1 | 1,| 左侧是输入 x,y ,| 右侧是输出 z
      如果在二维坐标系上绘图,可以看出来仅利用一条直线是无法对这个问题分类的,也就是线性不可分问题。
    2. 如果利用逻辑回归的方法,可以枚举各种特征的出现可能,即 z=g(θ0+θ1x+θ2y+θ3xy+θ4x2y+...)
    3. 继续想下去,如果基础特征量更多的话? x1,x2,...,x100 就会出现过拟合的问题,同时带来极大的计算量。
      例如,计算机视觉中处理一张照片,每个像素都需要一个数值表示。对于100*100像素值的图片,仅仅考虑二次项等级,就有特征数量为 (10000)2/2 个( xy yx 相同,故除以2)。
      于是,这章介绍的非线性分类器,神经网络(Neural Network,NN)就发挥了作用。
  2. 人工神经网络

    1. 神经网络最初提出的初衷,是因为要模拟人类大脑的结构(很初级的模拟,因为人类对于自己大脑究竟是怎样都没有弄清楚)。通过多个感知机之间的输入输出,从而完成整体的智能行为。在人工神经网络中,“感知机”就是一个有着输入与输出功能的小单元,接收上一层的输入,将输出传给下一层。
    2. 人工神经网络是层级结构,某一层上的单元之间互相不会有输入输出关系,只和上一层或者下一层的单元产生数据传输关系。至少会有两层:输入层(input layer)与输出层(output layer),但是两层的神经网络可以解决的问题很少,一般都是三层或者三层以上,中间的这些层就称为“隐藏层(hidden layer)”,我们来看一个最简单的例子:
      Drawing
      解释一下这张图, a(i) 表示的是第 i 层上所有单元中的数值, a(i)j 表示的是第 i 层上第 j 个单元中的数值。
      为什么不直接用 x 来代替 a(1) 呢?因为 a(1) 中增加了 a(1)0=1 ,在乘以权值后产生了 bias,也就是为下一层每个单元内数值增加一个常数偏移量。
      θ 是单元之间的传递权值 θ(i) 表示的是第 i (i+1) 层上所有单元之间的权值。如果第 i 层上的单元个数为 Si 个,所以得到 θ(i) 的矩阵元素个数为 Si+1(Si+1) ,+1是因为第 i 层上增加的元素 ai0
      g(x) 就是 Week 3 笔记中提到的 sigmoid 函数。
      输出层得到: hθ(x)=a(3)=g(θ(2)a(2))=g(θ(2)g(θ(1)a(1)))
    3. 由输入层,到隐藏层,最终到输出层。这是一次 forward propogation 过程。类似于逻辑回归,但是神经网络的输入是某个样本的所有基础特征,不需要考虑 x1x2,x2x3 这一类新加入的特征。
  3. 回到XOR Problem

    1. 先讲几个基础的利用神经网络进行二进制运算分类的问题:

      • 二进制 AND

        即为 hθ(x)=g(30+20x1+20x2) ,只有 (x1,x2)=(1,1) 时返回值才为1,符合 AND 的操作结果。

      • 二进制 OR

        即为 hθ(x)=g(10+20x1+20x2) ,只有 (x1,x2)=(0,0) 时返回值才为0,符合 OR 的操作结果。

      • 二进制 NOT
    2. XOR 问题复杂一些,但是如果我们做了如下转换:
      x1 XNOR x2 = NOT (x1 XOR x2) = (x1 AND x2) OR (( NOT x1) AND ( NOT x2))
      变换的正确性,很容易通过真值表来验证。大家可以分别计算各个括号中的内容,然后通过 OR 连接起来。
      我们将 (x1 AND x2) 的内容视为 a(2)1 (( NOT x1) AND ( NOT x2)) 的内容视为 a(2)2
      这里写图片描述
  4. 神经网络多类分类

    1. 神经网络处理多类的分类问题是很方便的。举个例子,区分手写数字时,有10个类别:0,1,2,……,9。对于某一个训练样本来说,有着特征组合 x(i)=(x(i)0,x(i)1,...) ,输出是 y(i)=5 ,将其改为 y(i)=(0000010000)T ,因此这个神经网络的输出层有10个单元。当输出层的10个单元全部取 0,意味着输入不是任何一种数字。
    2. 对于手写数字的识别,一直是业界的研究重点之一。视频中举了一篇经典的利用神经网络处理该问题的Paper,有兴趣的同学可以访问作者的个人主页查看Demo与Paper:Yann LeCun

Week 4 的内容到此为止,Week 5 的内容等从帝都回来再说啦~
编程作业答案:https://github.com/cnauroth/machine-learning-classd

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值