本系列主要是我对吴恩达的deeplearning.ai课程的理解和记录,完整的课程笔记已经有很多了,因此只记录我认为重要的东西和自己的一些理解。

第一门课 神经网络和深度学习(Neural Networks and Deep Learning)

第一周:深度学习引言(Introduction to Deep Learning)

1、常用神经网络的结构与对应的数据类型

数据类型

结构化数据:表格类型的数据,有明确的行和列。

非结构化数据:音频、视频、图像、文本等类型的数据。

网络结构

标准的NN结构如下图,包含输入层、隐藏层、输出层,前一层的所有节点和下一层的所有节点全部相连。可以认为标准的NN是全连接层组成的。

是最常见的网络结构,在数据量充足或者输入层的特征合适的情况下会获得较好的性能。它的输入一般都是

对于图像应用,我们经常在神经网络上使用卷积(Convolutional Neural Network),通常缩写为CNN。

正如其名,CNN会包含输入层、卷积层、输出层(还会有池化层)。CNN的最大特点就是使用了卷积来提取特征。

对于序列数据,例如音频,有一个时间组件,随着时间的推移,音频被播放出来。作为一维时间序列(两种英文说法one-dimensional time series / temporal sequence)。

在序列数据上经常使用RNN,一种递归神经网络(Recurrent Neural Network)。英语和汉语字母表或单词都是逐个出现的,所以语言也是最自然的序列数据。

当然,现实中的实际问题会有更复杂的情况,比如自动驾驶,会使用一些更复杂的混合的神经网络结构。

2、为什么深度学习会兴起?

假设有一个任务比如说准确率体现在垃圾邮件过滤或者广告点击预测,或者是神经网络在自动驾驶汽车时判断位置的准确性。如果把一个传统机器学习算法的性能与数据量的关系画出来,可能得到一个弯曲的线,如下图。它的性能一开始在增加更多数据时会上升,但是一段变化后它的性能就会像一个高原一样。假设你的水平轴拉的很长很长,它们不知道如何处理规模巨大的数据,而过去十年的社会里,我们遇到的很多问题只有相对较少的数据量。现在,我们的任何行为都会产生数据,并且被收集,使用。

神经网络展现出的是,如果你训练一个小型的神经网络,那么这个性能可能会像下图黄色曲线表示那样;如果你训练一个稍微大一点的神经网络,比如说一个中等规模的神经网络(下图蓝色曲线),它在某些数据上面的性能也会更好一些;如果你训练一个非常大的神经网络,它就会变成下图绿色曲线那样,并且保持变得越来越好。因此可以注意到两点:如果你想要获得较高的性能体现,那么你有两个条件要完成,第一个是你需要训练一个规模足够大的神经网络,以发挥数据规模量巨大的优点,另外你需要能画到x轴的这个位置,所以你需要很多的数据。

可以发现,想要在神经网络上获得更好的性能,往往就是要么训练一个更大的神经网络,要么投入更多的数据。另外这里说的数据是有标签的数据。

此外,红框部分想要说明的是,在数据量较小的情况下,各种算法的性能没有明确的好坏区分。此时决定算法性能的效果取决于你的特征工程以及后续的一些处理(模型融合)。

3、评估与迭代

最近几年,深度学习算法的创新主要在算法计算速度的提高上,例如激活函数从Sigmoid变为了ReLU一方面为了使梯度下降算法运行更快。

在拥有数据的前提下,算法的速度提高意味着在同样的时间内我们能尝试更多的想法,从而最后在应用是能够更好。

参考文献:

[1]. 课程视频:Coursera-deeplearning.ai / 网易云课堂

[2]. 深度学习笔记

最新文章

  1. [原创]MYSQL中利用外键实现级联删除和更新
  2. JavaWeb 自定义404页面
  3. AngularJS的小知识点
  4. Hibernate的Annotation注解
  5. 【linux】linux下动态库so文件的一些认识
  6. Linux常用命令_(系统管理)
  7. iOS - Swift available 平台判断
  8. 转:鏖战双十一-阿里直播平台面临的技术挑战(webSocket, 敏感词过滤等很不错)
  9. Waring:This LinearLayout layout or its FrameLayout parent is useless; transfer the background attribute to the other view
  10. java安全HTTPS工具类
  11. java synchronized 线程同步机制详解
  12. UVa 10170 - The Hotel with Infinite Rooms
  13. 抽象类(abstract class)与接口(interface)的异同
  14. 在Eclipse中使用git把项目导入到git中--转载
  15. Jmeter性能测试之基础知识(一)
  16. 【深度学习】吴恩达网易公开课练习(class1 week3)
  17. 利用XML语法 SQL 列转行
  18. c语言笔记4数据的输入和输出
  19. python中的面向对象学习以及类的封装(这篇文章初学者一定要好好看)
  20. Yii2.0 to(), toRoute(), current()区别用法

热门文章

  1. Unity 游戏框架搭建 (十三) 无需继承的单例的模板
  2. oracle 监听服务配置
  3. 在Oracle中计算两个日期间隔的天数、月数和年数
  4. c/c++面试----c工程开发之头文件
  5. 大学C++程序设计教程期末复习重点
  6. java.util.ArrayList,java.util.LinkedList,java.util.Vector的区别,使用场合.
  7. 通过xshell在linux上安装redis3.0.0
  8. Linux系统VPS主机SSH常用命令
  9. jQuery 使用问题
  10. php安装php-redis扩展