深度学习笔记(1)-人工神经网络
来源:互联网 发布:vivo手机虚拟网络设置 编辑:程序博客网 时间:2024/05/16 06:30
作者:吴玉霞
时间:2017年5月1日
出处:http://blog.csdn.net/sinat_36171246/article/details/71056454
声明:本文为博主原创文章,未经博主允许不得转载
前传:最近开始学深度学习,报了七月在线的11月深度学习班,为了防止学完后遗忘,也为了加深自己的理解,就记下此系列的笔记,其中引用了一些课程PPT里的图片,已征求过July大Boss的同意,我个人比较喜欢通俗易懂的技术博客,因此尽量做到大部分人都能看懂吧,讲得比较浅,如若有何不妥,还望大家尽情地批评指正吧!
目录
1、线性分类器
2、人工神经网络
3、神经网络之BP算法
4、神经网络之SGD算法
1、线性分类器
1.1 基本图像处理知识
首先,因为后面会用到图像处理的知识,所以我觉得有必要讲一下基本的知识,即图像的数字表示,因为计算机不像人,它看不见的,它只认识数字,所以我们跟计算机打交道,得说计算机能懂的语言不是?
先说计算机怎么看彩色图像的吧,
对于不了解图像处理知识同学,在这里解释一下,对于计算机而言,一张彩色图像就是一个三维的矩阵
(
这里的3代表3个颜色通道,就是传说中的三基色R(红)、G(绿)、B(蓝),
通过对每一个基色赋予一个比重,就能够组合出很多种颜色,对于我们所要处理的数字图像呢,每个颜色的比重范围都是从0~255,共256级,总共能组合出256×256×256=16777216种色彩,厉害吧。
为了更加直观,我们在matlab里面看一下哈,
首先我们给计算机输入一张图像 I=imread('D:\图片\2.jpg');
显示一下它的三个通道:IR=I(:,:,1); IG=I(:,:,2); IB=I(:,:,3);
看到了吧,I是一个
下面我们来看一下R、G、B矩阵里的数值吧
看第一个元素,它的颜色组合就是R=100,G=71,B=55。
而灰度图像,就只有一个通道,代表亮度,是一个二维矩阵。这里就不再展示了哈。
1.2 线性分类器(linear classifier)
好,我们言归正传,对于输入图像
在这里我们假设总共有10个类别(猫、狗、汽车、船等等),对计算机来说,就是一个
注:很多文献中直接写
如下图
具体操作时首先把
1.3 线性分类器的理解
我们举个简单的例子,假设输入图像只包含4个像素,
比如下图第一个类别cat score就是将
那么,怎么理解线性分类器实现分类呢?
(1)可以把线性分类器看做是空间的划分
比如下面三个不同的线段把二维平面分成不同的部分,当然更高维的便是超平面了
我们根据三行
(2)把线性分类器看做是模板的匹配
这个怎么理解呢?很简单,就是把
1.4 损失函数
下面一个问题就是,如何判断通过得分函数得出的类别准确性呢?这就引出了损失函数(Loss function),或称为代价函数(Cost function),表示结果和实际类别的差异,差异越大,损失函数值越大。我们对
下面主要介绍两种Loss function:
就像我们考试时做题目,两个老师有不同的判分标准。
1) hinge loss(对应于SVM)
中心思想就是:对于图像
具体来讲,对于输入图像
其中
先不要被这个复杂的公式吓着了,咱来举个例子,假设我们得到三个得分
什么意思呢?我们先看第二个类别得分-7,是错误类别,而正确类别是13,13比-7多多少呢,显然是20,比老师设置的
直观地理解:
前面已经说到,我们的要求是正确类别的得分比错误类别高,至少高出
2) cross-entropy loss(交叉熵损失,对应于softmax分类器)
很简单,就是得到得分向量后,根据得分向量计算正确类别的概率,我们清楚地知道,实际概率应该是
其中
关于公式背后具体的原理,大家可以参考知乎上如何通俗的解释交叉熵与相对熵?的回答。
最后,当我们得到Loss function后,就可以采用一些方法来减小损失,在一步步减小损失的过程中,求得最佳
2、人工神经网络
线性分类器存在一个问题,就是它是一个线性函数,对于空间线性不可分的情况(即一条直线分不开),它就没办法做分类了。
比如下面这种情况,一条直线怎么分都分不开嘛。
But, 如果我们用两条直线求交集,不就可以分开啦?
那怎么做呢,于是人工神经网络就应运而生了!
首先介绍简单的感知器
其中最左边
当我们加入一些少量的隐层单元,就得到了浅层神经网络,就是由很多个感知器组成的网络:
为什么线性函数后面要有一个非线性激励函数?它的作用就是可以滤除一些不必要的信号(让其值为0或很小)或者增加某些重要信号的权重,因为我们的大千世界,什么都有啊,我们会接收到各种各样的信号,比如,你在打电话,突然一阵风吹过来,跟你有关系吗?你需要挂断电话,考虑这阵风来自哪个方向吗?你四不四洒啊,哈哈,开个玩笑。但是,如果你在打电话时,突然一个歹徒拿着刀子对着你,你再不管,小命都没了。另外,假如没有非线性激励函数,层与层之间都是线性函数,那么叠加起来还是线性函数啊,就是说加入更多的神经元,更多的层次,只是改变了一下
行文至此,这么多参数,我们怎么调整得到最佳参数呢?这就要用到BP算法了。
3、神经网络之BP算法
其实BP算法的原理很简单,就是求导嘛,大家不要被它吓着了。
就两步:正向传播和反向传播
就像寒老师在课上拿考试举例子,我们去参加考试,不能裸考吧,你得学习吧,然后参加考试对答案,看看你哪地方错了,这个过程就是正向传播,计算我们的loss,得到误差,然后将误差反向传播,错误的原因肯定跟你考前对知识的掌握程度有关,我们要找到原因,然后修正,这样下次才能考高分啊。
在我们的神经网络中,层与层之间是函数嵌套的关系,即复合函数,大家看每个神经元,它的输入是不是由上一层的函数
我们举个简单的三层的例子,如下图:
设我们的输入是
以输出层的第k个神经元为例,
它的误差就是:
式中
那么,
因此,我们把误差展开到隐层,得到:
再展开到输入层:
现在误差有了,是一个复合函数,那么怎么调整权重,让误差不断减小呢?
4、神经网络之SGD算法
如下图所示,比如误差函数是图中的凸函数,初始点在Starting point,我们怎么找到它的最低点呢?
现在,让我们想象一下,你站在山顶上,想要下山,那么,怎样才能下得最快呢,只能一步一步来喽,于是你环顾一下四周,找到了一个最陡的方向(就是数学中梯度的方向咯),你走了两步,停下来,又环顾一下四周,再找一个最陡的方向,就这样一直到了山脚下。
所以,这个过程中的几个关键的因素就是:
初始值,就是初始位置了。
方向:就是你选的下山的方向,函数梯度的方向。
步长(学习率):每个方向走多远,走的距离太长,可能会错过最低点,走的距离太短,又会走很慢,走到天黑还没下来,你妈妈会担心的。
关于梯度的计算,就是对复合函数
然后新的
后记:之前在微博上说过“学习,还是要戒骄戒躁,夯实基础,不积跬步,无以至千里。那么问题来了,怎么知道自己学会了呢?我觉得你能写出来,讲出来,讲给大家听,让没学过的人都能够听懂,那你肯定学会了,摸透了,在讲述的同时,也锻炼了逻辑思维能力和表达能力,这就是我学习的终极目标。恩,以后每学会一个东西,我也写到博客里,锻炼一下,对自己也对他人负责”。所以也要说到做到嘛。但是感觉虽然写出来了,有些地方还是理解地不够透彻,大家可以多提意见,再完善一下。
参考资料
七月在线11月深度学习班
斯坦福大学cs231n线性分类器svm与softmax
- 深度学习笔记(1)-人工神经网络
- 人工神经网络学习笔记
- 深度学习(7) 人工神经网络
- 机器学习-->深度学习-->人工神经网络
- 深度学习笔记1:神经网络 卷积神经网络
- 人工神经网络学习笔记_英文字母识别
- 人工神经网络学习笔记_传递函数汇总
- 机器学习笔记之人工神经网络(ANN)
- 人工神经网络学习笔记_性能优化
- 机器学习笔记——人工神经网络
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 机器学习算法汇总:人工神经网络、深度学习及其它
- 山科校赛——Envy(优先队列)
- VMware 桥接找不到电脑上的网卡解决方法
- JQuery中的Ajax操作
- hexo3添加网易云跟帖以及简单修改样式
- BZOJ 4827 [Hnoi2017]礼物
- 深度学习笔记(1)-人工神经网络
- 理解Flink(二):分布式运行环境
- linux编程之缓冲型文件I/O
- 解密QQ号--队列
- 深入浅出Spring(三) 五种通知
- 关于本地服务器怎么让外网访问到
- Codeforces 1C Ancient Berland Circus
- #define new DEBUG_NEW
- 从输入url到页面展示到底发生了什么