ng-深度学习-课程笔记-1: 介绍深度学习(Week1)
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)的更多相关文章
- ng-深度学习-课程笔记-9: 机器学习策略1(Week1)
1 为什么要应用机器学习策略( Why is machine learning strategy ) 当你想优化一个问题的时候,通常可以有很多尝试(比如收集更多数据,增加迭代次数,改用adam,改变网 ...
- ng-深度学习-课程笔记-15: 循环序列模型(Week1)
1 数学符号(Notation) $ x^{<1>}, x^{<2>}, ..., x^{<t>}, ..., x^{<q>} $ 表示一段输入序列x, ...
- 深度学习课程笔记(十二) Matrix Capsule
深度学习课程笔记(十二) Matrix Capsule with EM Routing 2018-02-02 21:21:09 Paper: https://openreview.net/pdf ...
- 深度学习课程笔记(七):模仿学习(imitation learning)
深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...
- 深度学习课程笔记(十八)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 ...
- 深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning)
深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning) 2018-08-09 12:21:33 The video tutorial can ...
- 深度学习课程笔记(十六)Recursive Neural Network
深度学习课程笔记(十六)Recursive Neural Network 2018-08-07 22:47:14 This video tutorial is adopted from: Youtu ...
- 深度学习课程笔记(十五)Recurrent Neural Network
深度学习课程笔记(十五)Recurrent Neural Network 2018-08-07 18:55:12 This video tutorial can be found from: Yout ...
- 深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO)
深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO) 2018-07-17 16:54:51 Reference: https://b ...
随机推荐
- shell基础篇(九)函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用1. Shell 函数的定义格式如下: ...
- 在properties.xml中定义变量,在application.xml中取值问题
如果为application.xml中的变量赋默认值,同时又在properties.xml中变量赋值,而加载后是取不到properties.xml中的值的问题. 解决这个问题需要加上黑体部分配置: & ...
- 安装DatabaseLibrary
Using pip pip install robotframework-databaselibrary From Source Download source from https://github ...
- windows10 专业版激活工具
分享一个激活工具: 链接:https://pan.baidu.com/s/1HsdAKuxxsdvzZ282k7HtMg 提取码:tqe0
- PHP之变量范围
前面的话 变量范围即它定义的上下文背景(也就是它的生效范围).在javascript中,并没有变量范围这一概念,相似的可能是作用域.但是,由于javscript使用的是词法作用域,指变量声明时的位置: ...
- codereviw得到的一些经验
1.设置display为none的元素,它的背景图依然会被下载.所以最好是等到该元素需要显示时才给他加上相应的有背景图的class. 2.css中虽然ID选择器的优先级比较高,效率也比较高,但灵活性差 ...
- 【BZOJ2141】排队 树状数组+分块
[BZOJ2141]排队 Description 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备 ...
- 【BZOJ1040】[ZJOI2008]骑士 树形DP
[BZOJ1040][ZJOI2008]骑士 Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情 ...
- 【BZOJ1713】[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会 斜率优化
[BZOJ1713][Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会 Description Input 第1行输入N,之后N ...
- java如何重命名文件?
/** * 修改文件名 * @param oldFilePath 原文件路径 * @param newFileName 新文件名称 * @param overriding 判断标志(如果存在相同名的文 ...