Deep learning学习笔记(1)从回归到神经网络

本文思路:机器学习基本概念->线性回归->logistic回归->神经网络

1、机器学习简介

赫尔伯特·西蒙曾对“学习”给出过以下定义:如果一个系统能够通过执行某个过程改进它的性能,这就是学习。按照这一观点,机器学习就是计算机系统通过某个过程运用数据及统计方法提高系统性能。现在人们提及机器学习时,往往指统计机器学习。
接下来通过四个方面进一步深入理解机器学习机器学习:
1)机器学习的特点
a.以计算机网络为平台。
b.以数据为研究对象。
c.目的是对数据进行预测与分析。
d.以方法为中心,运用统计学习方法构建模型,并应用模型进行预测分析。
2)机器学习的对象
对象是数据。从数据出发,提取数据特征,抽象出数据模型,发现数据中的知识,又回到数据的分析与预测中。数据是多样的,包括数字、文字、图像、视频、语音以及他们的组合。
这里要提的一点是,机器学习关于数据的基本假设是同类数据具有一定的统计规律性,这是统计机器学习的前提。
3)机器学习的目的
用于对数据进行预测和分析。特别是对未知数据进行预测与分析。对数据的预测可以使计算机更加智能化,或者说是计算机的某些性能得到提高;对数据的分析可以使人们获得新的知识。
总的目的就是考虑学习什么样的模型和如何学习模型,以使模型能对数据进行准确的预测和分析,同时也要考虑尽可能地提高学习效率。
4)机器学习的方法
a.监督学习(用来解决分类、标注与回归问题)
b.非监督学习(聚类)
c.半监督学习
d.强化学习
机器学习系统三要素:
模型、策略、算法
模型:数据集中的规律 如y=ax+b
策略:什么样的模型才算是好的模型,通过最小化损失函数来确定。
算法:如何高效找到最优参数,即模型中的a和b。
机器学习方法步骤:
a.得到一个有限的训练数据集合;
b.确定包含所有可能的模型的假设空间,即学习模型的集合;
c.确定模型选择的准则,即学习的策略;
d.实现求解最优模型的算法,即学习的算

e.通过学习方法选择最优模型
f.利用学习的最优模型对新数据进行预测分析
Deep learning学习笔记(1)从回归到神经网络_第1张图片
如图所示,整个系统分为两个部分,学习系统通过数据集来训练模型,当有新的样本时,预测系统来做预测。
(以上部分摘自李航博士的统计学习方法蓝皮书,接下来才是重点哦)

2.从线性回归、logistic回归到神经网络

2.1线性回归

Deep learning学习笔记(1)从回归到神经网络_第2张图片
线性回归的输出是一个连续的数值,如上图所示,在股票市场的场景下,输入是前段时间的股票数据,来预测未来股票的工业指数。在无人车驾驶的场景中,输入无人车上的传感器所传回来的道路信息、与其他车辆的距离,输出方向盘要转的角度。在推荐系统中,输入是使用者A的喜好和商品B的特性,输出是购买的可能性,然后做一个排序。
这里我们讲一个有一段时间比较火的游戏pokemon的一个例子。
Deep learning学习笔记(1)从回归到神经网络_第3张图片
在这里我们想要做的是预测妙蛙种子进化后的战斗力,如图所示,这里有很多输入变量,Xcp为当前的战斗力值,Xhp为血量,Xw为体重,Xh为身高等。将输入变量输入到f()函数中,得到进化后的CP值。
Deep learning学习笔记(1)从回归到神经网络_第4张图片
首先第一步我们要建立一个模型,假设预测函数为y=b+w·Xcp,w和b在这里是我们所要确定的参数,y为预测值。当然我们也可以将这个一维模型扩展到多维的情况,在这里我们只讨论以Xcp作为变量的情况。
Deep learning学习笔记(1)从回归到神经网络_第5张图片
如图,我们获取了十个数据,横轴代表未进化前的cp值,纵轴代表进化后的cp值。我们现在要做的是找一个函数来衡量我们的模型的好坏。
Deep learning学习笔记(1)从回归到神经网络_第6张图片
这里我们用L(f)函数来做损失函数,y^为实际进化后的cp值,f()为预测的cp值。当实际值与预测值相差越大,L函数越大。将f函数的表达式y=b+w·Xcp带入,得到L(w,b),w,b是L函数的参数。此时我们要做的工作就是找到w,b的值,使损失函数最小。
Deep learning学习笔记(1)从回归到神经网络_第7张图片
设w*和b*分别为w和b的使L函数最小时的最优值,接下来我们用梯度下降来寻找最优值。
Deep learning学习笔记(1)从回归到神经网络_第8张图片
如图所示,我们先来寻找w*。首先对w初始化得w0,然后计算L对w的偏微分得到L在w0处的梯度方向,梯度负方向即函数下降最快的方向。当这里写图片描述 为负数,说明L函数左高右低,则增加w,若这里写图片描述 为正数,说明L函数左低右高,则减小w。
Deep learning学习笔记(1)从回归到神经网络_第9张图片
如图所示,通过梯度下降的方法,一步一步迭代找到局部最小,或者全局最小值,到达全局最小或者局部最小时,梯度就为0,w就不再变化了,此时我们说w收敛。在线性回归里,L函数是凸函数,所以局部最小即全局最小。这里的η是学习率,或者说是步长,即一次迭代能走多远。当η太大时,学习速度会很快,但会出现走过头的情况,然后会在最优值附近震荡,当η太小时,学习速度会比较慢,浪费时间,所以超参数η的选取也是一个技术活。
Deep learning学习笔记(1)从回归到神经网络_第10张图片
还有一种情况w也会停滞不前,如图所示,当L函数出现平原时,偏微分也会很小,w此时的学习速度就会很慢,所以梯度下降比较考验人品。。
Deep learning学习笔记(1)从回归到神经网络_第11张图片
上图是一个以w为纵轴,以b为横轴的等高线轮廓图。中间蓝色代表损失函数较小的区域。梯度下降算法通过一步一步迭代逐步逼近最优值,梯度方向即等高线的法线方向。接下来我们来求两个偏微分的表达式。
Deep learning学习笔记(1)从回归到神经网络_第12张图片
通过梯度下降算法求出最优值后,我们来看看结果如何。
Deep learning学习笔记(1)从回归到神经网络_第13张图片
如图所示,我们得到的w,b的最优值分别为2.7和-188.4。在训练集上的平均误差为31.9。但我们关注的并不是训练集上的误差,而是对新数据(测试集)进行预测的误差,即泛化误差。
Deep learning学习笔记(1)从回归到神经网络_第14张图片
可以看到,在测试集上的误差为35,大于训练集上的误差。
是否可以做的更好呢?
我们来换一个模型,如下图所示。
Deep learning学习笔记(1)从回归到神经网络_第15张图片
可以看到平均误差进一步减小。我们尝试用更多的模型来对比。可以得到:Deep learning学习笔记(1)从回归到神经网络_第16张图片
Deep learning学习笔记(1)从回归到神经网络_第17张图片
Deep learning学习笔记(1)从回归到神经网络_第18张图片
Deep learning学习笔记(1)从回归到神经网络_第19张图片
可以看出,当模型复杂度越来越大时,在训练集上的误差会越来越小,但这并不意味模型越来越好,因为我们要关注的是测试集上的误差,即当给出一个新数据,所做的预测值的准确程度。好比如,一个人去驾校学开车,可能在驾校学倒车入库,侧方停车学的非常好,但一上路就不会开了。或者说一个人的学习没有举一反三的能力,即泛化能力差。此时我们就把这种情况叫做过拟合,即拟合函数过了头。所以我们要根据训练误差和测试误差来综合考虑,选择最合适的模型。
那么如何来解决过拟合的问题呢?通常方法是在损失函数后加一个正则化。
Deep learning学习笔记(1)从回归到神经网络_第20张图片
这里的λ是一个超参数,因为我们要做的是最小化损失函数,所以λ约束了w不能过大。w值小,表示着函数比较平滑。
Deep learning学习笔记(1)从回归到神经网络_第21张图片
如图所示,当λ较小时,表示考虑训练误差比较多一点,此时测试误差就会很大,当λ较大时,表示考虑测试误差多一点,但也不是越大越好,要根据情况选择最优的λ。

2.2 logistic回归

logistic回归虽然有回归两个字,但却是一个二分类问题,因为这里的回归指的是广义的回归,即线性函数这里写图片描述外加了一个sigmoid映射函数

Deep learning学习笔记(1)从回归到神经网络_第22张图片将线性函数映射到0-1之间。
首先第一步,我们要建立一个函数集来表达假设空间。
Deep learning学习笔记(1)从回归到神经网络_第23张图片

这里可以将sigmoid函数看做是一个概率,z>=0时,这里写图片描述>=0.5,即分类为class1的概率大于0.5。
Deep learning学习笔记(1)从回归到神经网络_第24张图片
如上图,将X1 X2 X3 …当做输入,每个输入乘上一个权重Wi然后加和,再加上一个偏置项b得到z,将z送入sigmoid函数,得到一个属于class1的概率。
Deep learning学习笔记(1)从回归到神经网络_第25张图片
同样的,我们要找一个函数来衡量我们定义的logistic模型的好坏。之前提到过logist回归输出的是一个概率,所以我们可以根据训练集得到一个似然函数L(w,b)。此时我们要找到最优的w*和b*来使似然函数最大化。定义属于class1输出y^为1,class2输出y^为0.所以进一步得到:
Deep learning学习笔记(1)从回归到神经网络_第26张图片
将L(w,b)函数取ln然后加负号,进一步化简。如下图。
Deep learning学习笔记(1)从回归到神经网络_第27张图片
这里的H(p,q)是交叉熵函数(损失函数),代表着概率分布p和q的相似程度。H(p,q)越小,表示p和q越相似。p是实际类的值,q是预测类的值,即H代表预测的结果和实际结果的相似程度。同样的,我们要对损失函数最小化,利用梯度下降算法求损失函数最小时的w,b的值。推导结果如下:
Deep learning学习笔记(1)从回归到神经网络_第28张图片
这里可能会有同学会问,为什么不用在线性函数里的这里写图片描述来做损失函数呢?下面我们来解释一下这个问题。
Deep learning学习笔记(1)从回归到神经网络_第29张图片

可以看出,如果用这里写图片描述来做损失函数,当f(x)预测值接近实际值时,偏微分会接近0,这很合理,但如果f(x)离实际值很远时,偏微分也会接近0,这样的话,w就会更新的很慢,甚至停止更新,就学习不下去了。接下来我们对线性回归和logistic回归做一个对比。
Deep learning学习笔记(1)从回归到神经网络_第30张图片
接下来我们讲一下logistic回归的一个局限性,通过这个局限性,我们可以引出神经网络。如下图。
Deep learning学习笔记(1)从回归到神经网络_第31张图片
输入为X1 X2,可以将这个看做是异或问题,相异为C1,相同为C2。可以发现,logistic回归无法通过一条直线进行正确分类。如何解决这个问题呢,我们可以先对X1,X2做一个映射,再送入分类器中。
Deep learning学习笔记(1)从回归到神经网络_第32张图片
这里所做的映射是X1’表示到(0,0)点的距离,X2’表示到(1,1)点的距离。映射到右图后,可以通过一条直线来进行分类。整个过程可以用下图表示Deep learning学习笔记(1)从回归到神经网络_第33张图片
这个模型其实就是一个简单的单隐层神经网络,X为输入层,Y为输出层,特征映射层就是神经网络中的隐层神经网络。

3 神经网络基础

Deep learning学习笔记(1)从回归到神经网络_第34张图片
从上图可以看出,从2012年开始,在谷歌的应用开发中,deep learning成指数型增长。其实神经网络在很早就提出了,但由于很多技术上的问题和训练速度问题,不是很实用。在2012年的一个图像识别比赛上,Google用一个AlexNet卷积神经网络,将识别错误率降到16.4%,从那时开始,神经网络又出现在人们的视野里,2014年VGG神经网络将错误率降到了7.3%,GoogleNet降到了6.7%。神经网络近年来被广泛应用到各个方面。
上节我们讲到单隐层神经网络可以解决异或问题。接下来我们讲一个神经网络很强大的功能:模拟任意函数。动画演示链接:http://neuralnetworksanddeeplearning.com/chap4.html
Deep learning学习笔记(1)从回归到神经网络_第35张图片
如上图,我们只考虑上面的神经元,配置权重w和偏置b,可以得到sigmoid函数的输出图像。我们逐步增大w,会发现输出会越来越陡,设置w=999,b=-400,图像如下:
Deep learning学习笔记(1)从回归到神经网络_第36张图片
我们同时也启用下面的神经元。
Deep learning学习笔记(1)从回归到神经网络_第37张图片这里就得到了一个方波。
我们来构造更多的神经元看看会有什么效果:Deep learning学习笔记(1)从回归到神经网络_第38张图片
这里就输出了一系列的方波,我们可以将这些波形宽度设置足够窄,就可以模拟出任何函数。
一个神经网络模型的构建同样也可以通过之前所讲的三步来实现。第一步,构造一个模型,即设计一个神经网络结构;第二步,找一个函数来衡量这个模型的好坏;第三步,求得最优参数。
Deep learning学习笔记(1)从回归到神经网络_第39张图片
上图是一个多分类的全连接层。有input layer ,output layer和中间的L层Hidden Layers,其中的Hidden Layers做的事情其实就是做一个特征映射,然后将转换的特征送入一个softmax分类器。这也体现了神经网络的一个最显著的特点,自动提取特征,不需要人工设计特征。因此deep learning在语音,图像上的带来的进步非常大,而在nlp方面的优势并不是特别明显(设计特征词汇)。
第二步是找一个loss function来衡量模型好坏,同样的,我们呢可以采用交叉熵函数。如下图所示。
Deep learning学习笔记(1)从回归到神经网络_第40张图片
我们对所有样本的交叉熵函数做一个加和。
Deep learning学习笔记(1)从回归到神经网络_第41张图片
这里的L就可以看做是要最小化的目标函数,接下来我们同样可以用梯度下降方法来寻找最优值。
Deep learning学习笔记(1)从回归到神经网络_第42张图片
Backpropagation算法是一种快速计算神经网络中偏微分的方法,我们在下一节中会讲。
deep learning中的deep是指有很多层隐层的意思。下面几个神经网络模型很好的体现了deep的含义。。
Deep learning学习笔记(1)从回归到神经网络_第43张图片
Deep learning学习笔记(1)从回归到神经网络_第44张图片
接下来讲一个手写体识别的一个例子。
Deep learning学习笔记(1)从回归到神经网络_第45张图片

Deep learning学习笔记(1)从回归到神经网络_第46张图片
如上图所示,输入是一幅16×16的图片,把每个像素点的值都当做是一个输入值,则有256个input,中间可以含有多个隐层,用来提取特征,输出层因为有10个数字,所以有十个输出,每个输出都是一个概率,输出概率最大的y值就当做是预测值。

参考资料:
(1)统计学习方法
(2)李宏毅老师的机器学习课程 附链接:http://speech.ee.ntu.edu.tw/~tlkagk/index.html
(3)Neural Networks and Deep Leanring 作者:Michael Nielsen
附链接:http://neuralnetworksanddeeplearning.com/index.html

你可能感兴趣的:(deep-learning)