机器学习 学习记录(三)
来源:互联网 发布:centos 6.5 32位下载 编辑:程序博客网 时间:2024/06/07 08:07
本篇博客将着重介绍深度学习的相关知识
上篇,我们提到了逻辑回归的方法,这种方法用来处理分类问题,从上篇博客中,我们也知道了逻辑回归的一些局限性。有的时候类别并不能直接被一条直线分开,这个时候就需要我们采用特征变换的方法来将所用的特征变换到可以被直线分开的状态,。通常这种特征变换的方法比较难找,不容易得到,所以我们就思考有没有一种简单有效的方法来避开特征变换。事实上是有的。这种方法就是我们所说的深度学习。在介绍深度学习之前,我们看一下上篇博客提到的下列结构
上面图片描述了一种简单的神经元结构。在这张图上我们能看到,一个神经元应该包括输入(Input),权重(Weight),求和(Summation),激活函数(Sigmoid)。可能会问,那深度学习是什么呢?下面就将解释这个概念。上图中的这种其实就是简单的二分类所用到的结构,那如果我们多用几个这样的神经元是不是就可以处理一些更复杂的问题呢。答案是肯定的。请看下面的结构
图片引用自李宏毅(台湾大学)机器学习
通过上面的的结构,我们可以将一些无法用线性分类的数据进行坐标变换,从而实现数据比较规整的分布,进行线性分类。比如下面的数据
图片引用自知乎用户 王小龙 在 《如何简单形象又有趣地讲解神经网络是什么?》问题下的回答
这副图中的图片,显然我们无法找到一条直线简单有效地将图中数据分成两类。虽说如此,但我们可以通过坐标变换的方式,将图中的数据变成如下的分布状态
图片引用自知乎用户 王小龙 在 《如何简单形象又有趣地讲解神经网络是什么?》
其实这里的坐标变换你如果有经验的话可以利用自己的经验将数据直接变换开来,但是如果没有经验,那么神经网络或许可以帮你的忙。所以到这里我们就清楚了,其实神经网络做的就是坐标变换的事情,只不过利用神经网络,我们就不用在意找到坐标变换方法的细节。
通过上面的介绍,我们对神经网络就有了大致了解。接下来我们就将介绍一种神经网络的结构:全相连结构(Fully Connected Forward Network)。
我们来总结以下上面图中的三个要点:
1.神经网络其实是分层的(输入层Input Layer–>输出层Output Layer);
2.全相连结构中上一层的一个输出连上了下一层的所有神经元;
3.在输入层和输出层之间可能还会有很多层,我们将输入层和输出层之间的这些层称为隐藏层(Hidden Layer)。
那什么是深度学习呢?
深度学习其实就是指一个神经网络中有很多个隐藏层
在深度学习的方法里,我们不需要去考虑额外的东西,我们最大的关注点就是神经网络的具体结构。对于不同的问题,不同的神经网络结构会带来不一样的效果。
当隐藏层够多的时候,其空间变换的效果相对来讲就会更好。下面以一个实际的小栗子,具体来阐述以下,Deep Learning的操作过程。
手写数字识别:
1.Function Set- - - -Decide which net-structure to be used
2.Goodness of a function- - - - Cross-entropy
3.Find the best function - - - -Gradient Descent
求出
你可能会问,这么复杂的导数我怎么求啊?
不用担心,各位大牛已经帮我们做完了。现在市面上有很多很多的框架帮我们解决求导的问题,比较著名的有Google的Tensorflow(它的诞生就是为了深度学习服务的), LISA lab的Theano(它的诞生不是剑指深度学习)等。所以你可以不必担心求导的细节。即使如此,下面我们也将会留出一定篇幅来阐述,神经网络中求导是如何运算的。
假设
其中
假设
为了求得
其中
因此
于是下面的关键就是求解
其中
继续运用链式求导法则:
于是我们能够得到:
这样我们就得到前一层的z偏导与后一层z偏导之间的关系,我们把它表示成下面形式
图片引用自李宏毅(台湾大学)机器学习
前一层的偏导由后一层决定,后一层偏导由之后层的偏导决定,最终推到输出层,而输出层的偏导是显然的,于是就能够求出
求出偏导之后要做的就是利用梯度递减法更新参数。
到这里就把深度学习的梯度递减法讲完了
- 机器学习 学习记录(三)
- 机器学习(周志华)之前三章学习记录
- 机器学习(三)
- 机器学习 学习记录
- 机器学习 学习记录(二)
- 机器学习(三) KNN
- 机器学习笔记(三)
- 机器学习实战(三)
- 机器学习种类(三)
- 机器学习(三):神经网络
- 机器学习基本概念(三)
- 机器学习记录
- 机器视觉学习记录
- 机器学习网址记录
- 机器学习记录一
- 机器学习第一阶段记录
- 斯坦福机器学习记录
- 机器学习--学习笔记(三)--神经网络
- Windows下限制鼠标范围
- JS+css实现弹出窗口
- python3 爬虫 零基础快速上手(爬虫示例)
- SVM参数详解
- javaWeb项目中,web.xml的配置有什么?
- 机器学习 学习记录(三)
- 扎克伯格2015年度阅读书单(22本)[转]
- maven 打包代码
- css平方米
- 基于Maven的SpringBoot项目实现热部署的两种方式
- 字母塔
- 移植u-boot之修改代码
- 关于Andriod Studio 2.3 无法使用自定义字体的问题
- Thymeleaf