1 什么是神经网络( What is a neural network )

深度学习一般是指非常非常大的神经网络,那什么是神经网络呢?

以房子价格预测为例,现在你有6个房子(样本数量),你知道房子的大小和对应价格,你想要建立一个函数来用房子的大小来预测价格

我们可以用线性回归( linear regression) 来拟合这些数据。

可以把这个函数视作最为简单的神经元,用房子的大小x作为对神经元的输出,把房价y作为神经元的输出。神经网络就是有很多个这样的神经元堆积起来的。

所有的神经元都计算这个直线拟合的线性方程,结果输出取max(0,y),这里取max是因为价格不能为负。这个函数叫做relu函数( Rectified Linear Unite 线性整流 )

假设我们除了房子的大小外还有新的特征来预测价格。人们究竟要为房子花多少钱,取决于它们看重的这些因素,这些能帮助你去预测房价。

比如卧室的数量,你认为房子大小和卧室的数量决定了家庭人口的容量,而家庭人口容量是一个重要的因素。

比如邮编,你认为它可以告诉你步行的便利程度,像是去便利店,去上学是否比较方便,是否需要开车。

比如街区的富裕程度,你认为邮编和街区的富裕程度可以告诉你附近学校质量的好坏。

在这个例子中,输入x的四个维度为(房屋大小,卧室数量,邮政编码,富裕程度),输出y就是你要预测的价格。

图中的每一个小圈圈可以使relu函数或者其它的非线性函数。通过堆叠一些单一的神经元,我们可以得到稍微大一些的神经网络。

你只需要给神经网络大量的训练数据(输入x和输出y),而所有在中间的东西,神经网络会自己搞清楚。

所以你要实现的其实就是输入x,神经网络根据x来预测y。

只要给出足够多的数据x和y,神经网络就能拟合出一个函数来建立x和y之间的映射关系。

x1, x2, x3, x4就是输入层,这一层有4个神经元,代表4个特征。

中间三个圆圈是隐藏层,每个圆圈叫做隐藏神经元。每个神经元将所有4个特征作为输入,所以这一层在功能上叫做全连接层。

神经网络自己来决定这些网络节点是什么,我们只给出4个特征来完成你想要的任务。

比如隐藏层的第一个圆圈可能代表的是family size,神经网络认为它由x1和x2决定,在训练的时候x3和x4的权重就为0。

2 用神经网络做监督学习( Supervised Learning with Neural Networks )

监督学习是通过大量已有的输入x和输出y训练模型,建立x和y的映射关系,然后模型可以对新的输入x给出一个输出y。

下面是几个监督学习的应用例子,比如房价预测,广告预测,图像分类,语音识别,机器翻译,自动驾驶。

事实证明,结构稍有不同的神经网络在不同的应用领域都非常有用。

比如房价预测和广告预测用标准的NN,图像分类适合用CNN,语音识别和机器翻译(序列数据)适合用RNN。对于自动驾驶一般需要定制的/混合的网络结构。

机器学习能够应用于结构化数据和非结构化数据。结构化数据是基于数据库的。非结构化数据是原始音频,图片,文本这些数据,这些数据的训练相对困难许多。

人类能够很直接地理解这些非结构化数据,而近些年来深度学习的发展使神经网络能更好的解释这些数据,做出了很多amazing的应用,比如识别猫。

但神经网络带来的经济效益主要集中在结构化数据上,比如广告推荐,在海量数据库上有更好的数据处理能力。很多公司都基于这些做出更精准的预测。

3 为什么深度学习会兴起( Why is Deep Learning taking off? )

如果用传统的机器学习方法,比如SVM,逻辑回归,训练数据刚开始增加的时候,模型性能的曲线是逐渐上升,到了某个点后就趋于平稳了。(见下图红线)

随着社会的信息化发展和人类活动的增加,我们的数据从小数据变成了大数据。过去20年,我们仅仅是在累积数据,累积传统学习已经无法有效利用的数据。

而对于神经网络,当你数据逐渐增大时,表现会越来越好,见下图的曲线比较。

基于这些观察,如果你希望得到非常好的性能,第一需要很大的神经网络,第二需要很多的数据。所以通常说规模(神经网络的规模和数据的规模)推动了深度学习的进步。

但往往有限制,你的数据通常会被用光或者神经网络太大了训练时间难以接受。

m代表训练集样本数量,也就是图中的横轴。在m很小的时候算法的性能差不多,所以如果你数据不多的话,性能的好坏取决于你手动选择特征的技巧。

所以对于图中的左边区域,算法的优劣是很难说清的。性能往往取决于选取特征的技巧以及算法底层细节。

只有当m很大的时候,就是图像右边的区域,神经网络碾压了别的算法。

深度学习的初期,得意于数据的增长和计算规模的增加,我们只需要在CPU/GPU上训练一个非常大的神经网络,就能获得很好的结果。

但是渐渐的,特别是过去几年,我们看到了巨大的算法创新。有趣的是,很多算法创新在试图使神经网络运行的更快。

例如神经网络一个突破就是激活函数从sigmoid函数变成relu函数,因为使用sigmoid函数训练时有可能出现梯度消失,训练变的非常慢。而对于relu正的输入值梯度都为1,梯度很少会逐渐掉到0,训练变快很多。

训练神经网络需要一段时间,idea-code-experiment就是1次迭代。我们往往需要迭代很多次迭代,从想法,到编码,到实验,实验结果让你产生新的想法,修改算法细节,继续实验,不断循环。

如果训练一次需要很长时间的话,你将会花很多时间来进行这个循环。

所以快的运算能够帮助我们,它加快了得到实验结果的速度,这个确实帮助很多深度学习的从业者和研究者更快的改进自己的想法,这一切加快了深度学习社区的研究,使得每个月都有新算法发明。

这个社会在不可思议的发明新算法,并不断探索最前沿的知识。总之一些力量在驱动深度学习发展。所以快是深度学习兴起的一个重要原因( 算法的改进,硬件的提升比如GPU等等)

ng-深度学习-课程笔记-1: 介绍深度学习(Week1)的更多相关文章

  1. ng-深度学习-课程笔记-9: 机器学习策略1(Week1)

    1 为什么要应用机器学习策略( Why is machine learning strategy ) 当你想优化一个问题的时候,通常可以有很多尝试(比如收集更多数据,增加迭代次数,改用adam,改变网 ...

  2. ng-深度学习-课程笔记-15: 循环序列模型(Week1)

    1 数学符号(Notation) $ x^{<1>}, x^{<2>}, ..., x^{<t>}, ..., x^{<q>} $ 表示一段输入序列x, ...

  3. 深度学习课程笔记(十二) Matrix Capsule

    深度学习课程笔记(十二) Matrix Capsule with EM Routing  2018-02-02  21:21:09  Paper: https://openreview.net/pdf ...

  4. 深度学习课程笔记(七):模仿学习(imitation learning)

    深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...

  5. 深度学习课程笔记(十八)Deep Reinforcement Learning - Part 1 (17/11/27) Lectured by Yun-Nung Chen @ NTU CSIE

    深度学习课程笔记(十八)Deep Reinforcement Learning - Part 1 (17/11/27) Lectured by Yun-Nung Chen @ NTU CSIE 201 ...

  6. 深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning)

    深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning) 2018-08-09 12:21:33 The video tutorial can ...

  7. 深度学习课程笔记(十六)Recursive Neural Network

    深度学习课程笔记(十六)Recursive Neural Network  2018-08-07 22:47:14 This video tutorial is adopted from: Youtu ...

  8. 深度学习课程笔记(十五)Recurrent Neural Network

    深度学习课程笔记(十五)Recurrent Neural Network 2018-08-07 18:55:12 This video tutorial can be found from: Yout ...

  9. 深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO)

    深度学习课程笔记(十四)深度强化学习 ---  Proximal Policy Optimization (PPO) 2018-07-17 16:54:51  Reference: https://b ...

随机推荐

  1. Bash Shell 里的各种括号

    天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号 ...

  2. 详解google Chrome浏览器(理论篇)

    注解:各位读者,经博客园工作人员反馈,hosts涉及违规问题,我暂时屏蔽了最新hosts,若已经获取最新hosts的朋友们,注意保密,不要外传.给大家带来麻烦,对此非常抱歉!!! 开篇概述 1.详解g ...

  3. vue2.0+element-ui(01简单点的单页面)

    前言: 在<Vue.js权威指南>刚出版的时候,自己就作为一名前端粉捧了一把场,可是真是应了那句“出来混,总是要还的“这句话了,那时候信心满满的买来书想要认真研究,最终却还是把它搁浅了.直 ...

  4. Android 使用GridView以表格的形式显示多张图片

    GridView用于在界面上按行.列分布的方式来显示多个组件(而ListView只是以按行的方式) 课程目标 学会使用GridView制作二维布局界面(行.列分布) 数据源(集合) --> 适配 ...

  5. JDBC--Result 获取返回集合

    package jdbc.chap05; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql. ...

  6. Activity的LaunchMode应用场景思考

    本文链接:http://blog.csdn.net/xiaodongrush/article/details/28597855   1. 有哪几种类型?分别有什么用? http://developer ...

  7. angular -- get请求该如何使用?

    在做 angualr 的开发过程中,经常会用到的就是 ajax 请求.下面是 get 请求示例: 如果存在多个 get 请求可以考虑进行封装下: // get 携参数访问 ajaxGet(getUrl ...

  8. 有限制的最短路spfa+优先队列

    poj1724 ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10751   Accepted: 3952 De ...

  9. python下几种打开文件的方式

    昨天看完了这本python进阶,感觉这本书对我启发很大,做了三张纸的笔记,方便我在遇到问题的时候翻阅,然后寻找可能的解决方案.作为一个使用Python一年的小白,虽然说不是小白,但是这一年来基本上是用 ...

  10. pta 习题集 5-5 最长连续递增子序列 (dp)

    给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数n ...