4. Neural Networks (part one)

Content:

  4. Neural Networks (part one)

    4.1 Non-linear Classification.

    4.2 Neural Model(神经元模型)

    4.3 Forward Propagation

    4.4 神经网络实现与或非门以及异或门

      4.4.1 实现与或非门(AND/OR/NOT)

      4.4.2 实现异或/同或门(XOR/XNOR)

    4.5 Multi-class classification

key words: Neural networks, Neural model, Forward Propagation

4.1 Non-linear Classification

对于非线性的分类问题(如图4-1所示的非线性0-1分类问题),在特征量较少的情况,我们可以用多项式类型的Logistic回归来处理。但是一旦特征量较多,多项式的Logistic回归就会很困难。因为如果问题原有n个特征量,采用二次多项式特征量个数约等于(n^2)/ 2,也就是O(n^2),而用三次多项式特征量的个数更是O(n^3),等等。当n较大时(如n > 1000),计算机无法承受这么大的向量运算。所以需要一种新的模型(算法)来处理特征量较大的非线性分类问题。

图4-1 非线性0-1分类问题

那么什么问题会有较多的特征量? 计算机视觉(Computer Vision)领域就常常会遇到。我们知道,对于人类所看到的一张图片,在计算机里是以矩阵存储的。如图4-2所示,以要判别一张图片是否为汽车的问题为例,我们有一张像素为50*50的图片,即至少一共有2500个像素点()对于RGB的图片有7500个),所以特征量的个数n = 2500,如果用二次多项式预测,那么特征量个数将变成近3百万!这样计算代价太大了。下面将介绍一种新的模型-神经网络(Neural Networks),可以不需要通过增加特征量个数来解决非线性分类问题(当然它在其他问题也有应用)。

图4-2 判断一张图片是否为汽车

4.2 Neural Model(神经元模型)

神经网络是一种模拟大脑的算法。一种较正规的定义是

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

神经网络中最基本的成分是神经元模型(Neural Model)(又称Logistic unit),即上述定义中的“简单单元”。对于人类而言,我们的视觉听觉是由大脑的神经中枢产生。而神经中枢是由大量的神经元相互连接而成。一个神经元通过树突接受其他神经元传来的化学物质(信息),从而改变该神经元的电位,当电位到达某一阙值(threshold)时,该神经元被激活,即“兴奋”起来,从而通过轴突向其他神经元发送化学物质,如图4-3所示。

图4-3 生物神经系统中的神经元

而神经元模型便是模拟上述的神经元接受信息并传递信息的过程。如图4-4所示,神经元接收来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阙值进行比较,再通过激活函数(activation function)处理以产生神经元的输出。

图4-4 从阙值角度理解的神经元模型

理想中的激活函数是图4-5(a)所示的阶跃函数,它将输入值映射为输出值“0”或“1”, “1”对应神经元兴奋,“0”对应神经元抑制。但是,阶跃函数具有不连续,不光滑(不连续可导)等不太好的性质,因此实际中常用Logistic回归中应用到的sigmoid函数作为激活函数。典型的sigmoid函数如图4-5(b)所示,它把可能在较大范围内变化的输入值挤压到(0, 1)输出值范围内,因此有时又称之为“挤压函数”(squashing function).

图4-5 典型的神经元激活函数(图片来自《机器学习》, 周志华)

图4-6 从偏移单元角度理解的神经元模型

4.3 Forward Propagation

4.2节已经学习了神经网络的最基本成分-神经元模型,下面将介绍如何用神经元搭建多层前馈神经网络(multi-layer feedforward neural)Forward Propagation算法

如图4-7所示,多次前馈神经网络有三部分组成,分别是输入层(input layer),隐藏层(hide layer),输出层(output layer)。隐藏层可以有,也可以没有,输入层和输出层必须要有。没有隐藏层的神经网络是线性的,只能处理线性可分的问题(线性可分问题从二维的角度就是分界线是一条直线,多维就是存在线性超平面将其分类)。一个没有隐藏层且输出层只有一个单元的神经网络就相当于线性的Logistic模型。

图4-7 一个含两层隐藏层的多次前馈神经网络

前向传播(Forward Propagation)算法就是利用已经训练出的连接权重(或称映射权重)和4.2节神经元模型中的输出公式(1)来计算出每一层每一个神经元的激活值(activation),最终得到输出层的激活值,也就是输出值.

图4-8给出了在一个具体的神经网络使用前向传播算法的例子,其中,激活函数是sigmoid函数g(x);

图4-8 一个使用前向传播算法(向量实现)的例子

4.4 神经网络实现与或非门以及异或门

4.4.1 实现与或非门(AND/OR/NOT)

4.4.2 实现异或/同或门(XOR/XNOR)

在4.4.1小节中发现,实现与或非门只需要输入层和输出层,不需要隐藏层,也就是说与或非问题是线性可分的。但是,异或/同或却是非线性可分的,如图4-9所示。

图4-9 异或/同或问题

在数字逻辑中我们知道可以利用与或非门搭出异或/同或门,那是因为有如下运算法则,

a XOR b = ((NOT a) AND b) OR (a AND (NOT b));

a XNOR b = NOT (a XOR b) = (a AND b) OR ((NOT a) AND (NOT b))

既然我们用神经网络实现了与或非门,那么也有理由可以实现异或和同或门,图4-10以实现同或门为例(只需在同或门后加上一个非门实现了异或门)。

图4-10 实现同或门

4.5 Multi-class classification

对于多分类问题,在2.6节已经用Logistic回归模型讨论过了。现在用神经网络来处理。假设我们需要识别一张图片是行人,汽车,摩托车,还是卡车,也就是有4种类别。所以我们设计如图4-10所示的神经网络。由于一共有4类,所以该神经网络有4个输出单元,分别将其标号为1,2,3,4,对应行人,汽车,摩托车,卡车。每次预测输出的是一个4维向量。所以我们的训练集相比于Logistic回归模型要做改变,即每一个样例的结果y(i)也是一个4维向量且是[1 0 0 0 ]’, [0 1 0 0]’, [0 0 1 0]’, [0 0 0 1]’中的一个。至于预测时的结果分析和Logistic回归模型中使用的One-vs-all类似,不再重复。仅给出例子如下:

  • 若h = [0.12 0.71 0.13 0.45]’,则就相当于[0 1 0 0]’,故为第二个输出单元的标记,也就是汽车;
  • 若h =[0.12 0.64 0.83 0.21]’, 则就相当于[0 1 1 0]’,此时我们选择置信度最大的,也就是max h = 0.83,即第三个输出单元的标记,也就是摩托车。

不管怎样,都是选择向量中最大的一个元素的标记(下标),即matlab中的max(h, [], 2).

图4-11 一个处理4分类问题的神经网络

参考:

《机器学习》 周志华

Stanford机器学习笔记-4. 神经网络Neural Networks (part one)的更多相关文章

  1. Stanford机器学习笔记-5.神经网络Neural Networks (part two)

    5 Neural Networks (part two) content: 5 Neural Networks (part two) 5.1 cost function 5.2 Back Propag ...

  2. Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning

    原文 http://blog.csdn.net/abcjennifer/article/details/7758797 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  3. 论文笔记:Diffusion-Convolutional Neural Networks (传播-卷积神经网络)

    Diffusion-Convolutional Neural Networks (传播-卷积神经网络)2018-04-09 21:59:02 1. Abstract: 我们提出传播-卷积神经网络(DC ...

  4. 【论文笔记】Progressive Neural Networks 渐进式神经网络

    Progressive NN Progressive NN是第一篇我看到的deepmind做这个问题的.思路就是说我不能忘记第一个任务的网络,同时又能使用第一个任务的网络来做第二个任务. 为了不忘记之 ...

  5. 论文笔记(1)-Dropout-Improving neural networks by preventing co-adaptation of feature detectors

    Improving neural networks by preventing co-adaptation of feature detectors 是Hinton在2012年6月份发表的,从这篇文章 ...

  6. 斯坦福机器学习视频笔记 Week4 & Week5 神经网络 Neural Networks

    神经网络是一种受大脑工作原理启发的模式. 它在许多应用中广泛使用:当您的手机解释并理解您的语音命令时,很可能是神经网络正在帮助理解您的语音; 当您兑现支票时,自动读取数字的机器也使用神经网络. Non ...

  7. Coursera 机器学习 第5章 Neural Networks: Learning 学习笔记

    5.1节 Cost Function神经网络的代价函数. 上图回顾神经网络中的一些概念: L  神经网络的总层数. sl  第l层的单元数量(不包括偏差单元). 2类分类问题:二元分类和多元分类. 上 ...

  8. 机器学习(六)--------神经网络(Neural Networks)

    无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时, 计算的负荷会非常大. 比如识别图像,是否是一辆汽车,可能就需要判断太多像素. 这时候就需要神经网络. 神经网络是模拟人类大脑的神经网络, ...

  9. 【原】Coursera—Andrew Ng机器学习—Week 4 习题—Neural Networks 神经网络

    [1] Answer:C [2] Answer:D 第二层要输出四个元素a1 a2 a3 a4.输入x有两个,加一个x0是三个.所以是4 * 3 [3] Answer:C [4] Answer:C [ ...

随机推荐

  1. JSON.stringify()、JSON.parse()和eval(string)

    1.JSON.stringify()用于从一个对象解析出字符串,eg: var obj = {"name":"奔跑的蜗牛","age":&q ...

  2. CSS学习总结(一)

    不知道大家对CSS的印象是怎么样的呢?也许有些模糊,也许根本不清楚.其实它跟我们密切相关,一旦我们浏览网页,都在与它打交道.没有它,我们看不到现在如此丰富多彩的网页效果.那么它到底是什么呢?又该如何使 ...

  3. BPM配置故事之案例8-根据表单数据调整审批线路

    Boss突然来到:小明啊,咱们的物资申请金额现在既然可以确定了,以后金额在1万以下的申请单,就不用我审批了.直接通过就行了. 小明:好的 然后小明把流程线路改成了这样. 线路条件1 线路条件2

  4. clang编译mysql(Ubuntu10 64位)

    编译安装mysql(Ubuntu10 64位) http://www.cnblogs.com/2018/p/3482259.html 这个介绍了gcc形式编译安装mysql 那我们使用clang进行编 ...

  5. 自定义有监听器的ScrollView

    public class ObservableScrollView extends ScrollView { public ObservableScrollView(Context context) ...

  6. 浅谈Java五大设计原则之观察者模式

    定义一下观察者模式: 观察者模式又叫  发布-订阅  模式,定义的两个对象之间是一种一对多的强依赖关系,当一个对象的状态发生改变,所有依赖它的对象 将得到通知并自动更新(摘自Hand First). ...

  7. 【读书笔记】iOS网络-Cookie

    Cookie是HTTP协议在首个版本之后加入的一个重要组件.它向服务器提供了追踪会话状态的能力,同时又无须维持客户端与服务器之间的连接.在浏览器客户端,Cookie值是由服务器通过请求提供的,,然后被 ...

  8. 自己用js写的日历(在考勤中使用,显示员工的日期的考勤情况)

    1.HTML部分 <div id="AttendanceDataDetailDiv"> <div class="A_close"> &l ...

  9. iOS 9 升级过程汇中白苹果 iPhone或iPad 解决方案

    最近想必有很多朋友升级了iOS 9,不过有部分朋友在升级过程中遇到了白苹果问题.也就是卡在升级过程中,不限重启.这时,你只能通过dfu进行升级了. ios9怎么进入dfu模式: 1.将你的iPhone ...

  10. git浅谈

    我们为什么要使用git 应用场景分析 1.使用svn,已经开发完一个需求,正在开发第二个需求,但是测试需要你立刻将你完成的第一个需求提交,请问现在你该怎么做: svn的解决方法大概是这样的:打开提交视 ...