深度学习基础
深度学习发展历程
三起两落的深度学习:
1943年,由一位心理学家和一位数学家共同提出人工神经网络的基本概念,不过在当时并没有得到大众的重视。直到1957年感知器模型的提出,使得神经网络可以解决一些常规的线性分类和线性回归的任务,这引发了AI研究的热潮,但是在之后的研究中发现,它无法解决简单的异或问题(XOR),因此迎来了第一次低潮。虽然在1980年多层感知器解决了单层感知器的问题,但是对其网络参数的计算问题却成为了一个难点。但是在1986时,反向传播算法的提出解决了对少数层神经网络训练的问题,虽然依然存在一些问题,但是受限于但是的条件,通过反向传播能够简单,低效的对多层感知器进行学习,这个时候也就迎来了第二次高潮。同时,该算法的也存在缺陷,主要体现在两个方面,随着深度的加深,容易产生梯度的消失或者梯度爆炸,使得网络的参数没有得到实施的解决。除此之外呢,该算法容易陷入局部最优的问题,因此呢,便迎来了第二次低谷。而在1988年时,尽管当时提出了卷积神经网络,但是却并没有得到过多的重视。直到2006年,提出了深度学习,得益于时代的发展,人工神经网再次得到了发展,尤其在2012年,AlexNet算法的提出,引起瞩目,在此之后,各种优质算法层出不穷,作用于各个方面。
什么是人工神经网络
它属于机器学习的一种方法,而机器学习是解决人工智能问题的一种技术,最具有代表性的为深度学习。
作为一种网络,则拥有其节点,而在人工神经网络之中,称之为神经元。神经元与神经元存在一定关系。同时也组成了不同的层:输入层、输出层、隐藏层。
什么是感知器
第一个具有完整算法描述的神经网络学习算法(称之为感知器学习算法:PLA)
任何线性分类或者线性回归问题都可以用感知器来解决。
为神经网络的一部分,而一个人工神经网络则是由多个感知器组成。
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network)
分类和回归
分类:通过网络得到离散的值,而这些值则代表着不同的类。
回归:通过网络得到连续的值。
什么是深度学习
含有多隐藏层的多层感知器就是一种深度学习结构。
因此神经元、感知器、神经网络与深度学习的关系如下图:
深度学习中的核心知识
前向运算与反向运算:
前向运算:
拿到一个深度学习网络结构之后,我们会利用该网络结构来完成一个任务,而通过该网络得到一个结果的过程就是前向运算(例如分类任务,回归任务等)。在该过程中,我们可以知道其网络结构,同时也需要知道其每一层的网络参数,而得出这些参数的过程就是方向传播的过程。而这个过程则是一个有监督的过程,可以根据样本而求出参数,之后再通过这些参数进行预测。简单来说即为:计算输出值的过程称为前向传播。(已知层的结构)
同时,这里引入了监督的概念:
有监督学习:给出的样本中的对应标签已经由人为的标注出的学习
无监督学习:只给出了样本,但是没有给出相应的标签。
半监督学习:一部分给出了标签,一部分没有标签。
网络结构的难点为:1.关于f函数是如何定义的;
2.函数中的相关参数的值分别是什么。
而前向运算,与反向运算则分别解决的相应的问题。
反向运算:
通常神经网络的结构是由人为决定的(称之为网络搭建过程)
而网络结构中的的参数求解的则是由计算机运算得出(称之为训练过程)
梯度下降算法
计算输出层结果与真实值之间的偏差来进行逐层调节参数的算法。
什么是导数
导数(一元函数)是变化率、是切线的斜率、是瞬时速度、是加速度。
什么是方向导数
函数在A点无数的切线的斜率的定义。每一个切线都代表一个方向的变化。(高维空间中)
什么是偏导数
多元函数降维时候的变化,比如二元函数固定y,只让x单独变化,从而看成是关于x的一元函数的变化来研究。
什么是梯度
函数在A点无数个变化方向中变化最快的那个方向。
因此可以理解为寻找最小值的过程。而梯度下降算法就是沿着导数下降的方法,进行参数更新。
途中阿尔法称之为学习率即为步长。
举一个非常简单的例子,如求函数的最小值。
利用梯度下降的方法解题步骤如下:
1、求梯度,
2、向梯度相反的方向移动 ,如下
,其中, 为步长。如果步长足够小,则可以保证每一次迭代都在减小,但可能导致收敛太慢,如果步长太大,则不能保证每一次迭代都减少,也不能保证收敛。
3、循环迭代步骤2,直到 的值变化到使得 在两次迭代之间的差值足够小,比如0.00000001,也就是说,直到两次迭代计算出来的 基本没有变化,则说明此时 已经达到局部最小值了。
4、此时,输出 ,这个 就是使得函数 在这里插入图片描述最小时的 的取值 。
因此序言选择合适的补偿/学习率。
局部最优解
迭代过程以及参数优化概念
神经网络参数训练是一个不断迭代的过程
参数更新:
参数优化的问题:
W为参数,X为输入值,WX则为预测值,Y为标签值。因此||WX-Y||得出的结果即为Loss,而在不断地优化地过程中则是不断缩小Loss,而不断更新参数。
深度学习发展迅猛的原因
三个因素:
而随着时代的发展,各个因素都得到了发展。