神经网络和深度学习(一) ——深度学习概述

神经网络和深度学习(一)——深度学习概述

(原创内容,转载请注明来源,谢谢)

一、监督学习与神经网络

监督学习可以在一些地方应用,包括房价预测、广告精准定位、图像识别、声音识别、翻译、图像定位等。当需求更复杂时,可以考虑用神经网络来使用,包括标准神经网络(standard neural network)、卷积神经网络(CNN,ConvolutionalNeural Network)、循环神经网络(RNN,Recurrent Neural Networks )、复合神经网络等。

二、各类NN

1、神经网络

神经网络包含输入层、输出层、隐藏层等,通过隐藏层的处理,得到输出的结果。其主要运用到BP算法来调优,即反向传播算法,不断的前向迭代得到结果,再反向传播纠正结果。

2、卷积神经网络

卷积神经网络是在BP神经网络的改进,与BP类似,都采用了前向传播计算输出值,反向传播调整权重和偏置。

CNN与标准的BP最大的不同是:CNN中相邻层之间的神经单元并不是全连接,而是部分连接,也就是某个神经单元的感知区域来自于上层的部分神经单元,而不是像BP那样与所有的神经单元相连接。

CNN的有三个重要的思想架构:局部区域感知;权重共享;空间或时间上的采样。

局部区域感知能够发现数据的一些局部特征,比如图片上的一个角,一段弧,这些基本特征是构成动物视觉的基础;而BP中,所有的像素点是一堆混乱的点,相互之间的关系没有被挖掘。

CNN的另一种图示方式:

3、循环神经网络

RNN是包含循环的网络,允许信息的持久化。循环可以使得信息可以从当前步传递到下一步,RNN可以被看做是同一神经网络的多次赋值,每个神经网络模块会把消息传递给下一个。链式的特征揭示了 RNN 本质上是与序列和列表相关的。他们是对于这类数据的最自然的神经网络架构。

关于RNN,还有更进一步的思想,叫做LSTM(long-shortterm memory)——长短期记忆网络,其是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。

三、深度学习优势

监督学习中,主要处理的数据类型有两种:结构化数据和非结构化数据。

结构化数据,就是类似数据库表的形式,指定一些特征值和一些结果。计算机一直以来都很擅长与处理这类内容。

非结构化数据,例如声音、图像、文字等,这些人类比较擅长识别,但是对于机器来说处理过程比较复杂。

复杂的过程意味着大量复杂的计算,深度学习相比普通的机器学习,有效解决此类问题。

四、深度学习兴起的原因

深度学习,并不是近期才有的概念,但是最近才开始火起来。主要原因有两个方面:一是数据量越来越大,导致原有的算法处理大量数据问题较多;二是大型神经网络的构建,使得有更好的算法来快速处理问题。

但是,对于数据量不大的情况,深度学习未必会比普通的机器学习算法快,反而有可能诸如SVM等算法效果更好。

五、神经网络与RELU

对于机器学习,无论是logistic回归、SVM还是浅层神经网络的BP算法等,很经常提到一个激活函数——sigmoid函数,y=1/(1+e-z),用于控制输出的值在0~1之间。另外还有类似tanh函数,可以控制输出的值在-1~1之间,其性质是一样的。如下图所示:

但是,这两个激活函数有个问题。例如sigmoid,在函数值趋于0或者趋于1时,变换率非常小,则偏导数很小,优化起来速度会非常慢,不利于优化。

深度学习中,大量的神经元,需要大量的这种计算,因此用了一个改进的函数来作为激活函数,称为ReLU(rectified linear union),修正的先行单元,其小于某个值时都是0,大于时会是线性增长,如下图所示:

多层神经网络,则分为输出层、隐藏层1、隐藏层2、输出层等,如下图所示:

六、总结

这是深度学习微专业的第一课,算是一个概述类的课程,对神经网络有个非常初步的了解,后面要开始深入的学习了。

——written by linhxx 2018.01.28

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-01-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏拭心的安卓进阶之路

Java 集合深入理解(6):AbstractList

今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

20910
来自专栏Java Edge

AbstractList源码解析1 实现的方法2 两种内部迭代器3 两种内部类3 SubList 源码分析4 RandomAccessSubList 源码:AbstractList 作为 Lis

它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换

622
来自专栏ml

朴素贝叶斯分类器(离散型)算法实现(一)

1. 贝叶斯定理:        (1)   P(A^B) = P(A|B)P(B) = P(B|A)P(A)   由(1)得    P(A|B) = P(B|...

3627
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1524
来自专栏拭心的安卓进阶之路

Java 集合深入理解(12):古老的 Vector

今天刮台风,躲屋里看看 Vector ! 都说 Vector 是线程安全的 ArrayList,今天来根据源码看看是不是这么相...

2547
来自专栏xingoo, 一个梦想做发明家的程序员

20120918-向量实现《数据结构与算法分析》

#include <iostream> #include <list> #include <string> #include <vector> #include...

1876
来自专栏聊聊技术

原 初学图论-Kahn拓扑排序算法(Kah

3008
来自专栏xingoo, 一个梦想做发明家的程序员

Spark踩坑——java.lang.AbstractMethodError

百度了一下说是版本不一致导致的。于是重新检查各个jar包,发现spark-sql-kafka的版本是2.2,而spark的版本是2.3,修改spark-sql-...

1270
来自专栏学海无涯

Android开发之奇怪的Fragment

说起Android中的Fragment,在使用的时候稍加注意,就会发现存在以下两种: v4包中的兼容Fragment,android.support.v4.ap...

3215
来自专栏Phoenix的Android之旅

Java 集合 Vector

List有三种实现,ArrayList, LinkedList, Vector, 它们的区别在于, ArrayList是非线程安全的, Vector则是线程安全...

692

扫码关注云+社区