编者最近都在忙着梳理一些深度学习的框架,所以更新慢了。编者从事嵌入式人工智能方向,人工智能方向一直认为自己才疏学浅,后学末进,所以一直学习但是没有整理,这次内部一个分享迫使不得不重视起来。卷了几个周末,累啊!陆续也会把自己整理出的东西分享一下。
1、深度学习的两类问题1.1 线性回归1.2 softmax分类
2、梯度下降算法2.1 什么是梯度2.2 梯度下降算法步骤
3、神经网络基础3.1 神经元3.2 前向传播3.3 反向传播3.4 神经网络
4、模型训练的一般步骤
1、深度学习的两类问题
深度学习的应用:计算机视觉、自然语言处理、推荐系统、语言处理等
机器视觉主要处理的问题:图像分类、目标检测、图像分割、目标追踪。
自然语言处理:人类语言变成计算机符号成为自然语言的认知和理解;将计算机的符号变成人类的自然语言称为自然语言生成。
深度学习是机器学习的分支,机器学习有两大主要任务:预测数值型数据,即回归问题;将实例数据进行类别划分,即分类问题。
目的 | 含义 | 模型 | |
---|---|---|---|
回归 | 建立映射关系 | 预测输入变量和输出变量之间的关系 | 表示从输入变量到输出变量之间映射关系的函数 |
分类 | 建立映射关系 | 判断输入所属的类别 | 输出一般是一个离散值 |
1.1 线性回归
模型定义:y=wx+b,线性回归就是找一个直线,让直线尽可能的拟合数据。
模型训练:
(1)准备训练数据
(2)模型训练中,衡量预测值和真实值之间的误差,选取非负数为误差称为损失函数。
(3)当损失函数简单时,误差最小化问题的解可以用公式表示,称为解析解;多数深度学习模型没有解析解,需要通过优化算法经过有限次迭代模型参数来最小化损失函数,叫数值解。
(4)通过(3)获得(w,b)可以用模型y=wx+b预测训练集以外测试数据。
1.2 softmax分类
模型定义:数组第i个元素的指数与所有元素指数和的比值
softmax分类器常用于多分类,输出值的个数等于标签的类别数。以图像分类为例,像素作为输入 x_i,通过线性得分函数f(x_i,w,b)=w*x_i+b获得原始得分,假设有三个类别,得分为【1,2,3】,则使用softmax函数得到三类的概率,属于哪类的概率最大则可能性最大。
模型训练:
(1)损失函数评价预测值和真实值的相似程度,softmax分类的损失函数为
(2)最小化损失函数求得最优的值。使用优化算法将损失函数最小化。
2、梯度下降算法
2.1 什么是梯度
通俗来说,我们可以把梯度下降想象成一个爬山的过程。现在我们站在一个山丘上,我们希望找到一个山谷,也就是我们希望找到一个最低点。我们的眼睛无法直接看到最低点在哪里,但是我们可以沿着山的“梯度”(也就是斜率)方向走,一直走下去,直到找到山谷。
在数学上,梯度是一个向量,包含了函数在某一点的斜率。梯度的方向是函数值增加最快的方向,它的模(大小)表示函数值上升的程度或速度,所以我们应该沿着这个方向反方向走,也就是朝向山谷的方向。
优化算法的目标:是在模型表征空间中找到模型评估指标最好的模型。当前深度学习的参数维度和数量很大,常用的优化算法是梯度下降算法。
2.2 梯度下降算法步骤
在梯度下降算法中,我们需要定义一个学习率,也就是我们每一步走的距离。太大的学习率可能会导致我们无法找到正确的方向,而太小的学习率可能会让我们走得太慢。
以下是一个简单的梯度下降算法的步骤:
定义一个初始点。
计算在当前点的梯度。
沿着梯度的反方向走一步。具体来说,如果梯度是(0.1,-1.1),那么我们就在x轴上减0.1,在y轴上加1.1。
重复第2步和第3步,直到满足某个停止条件,比如达到最大迭代次数,或者梯度的大小小于某个阈值。
更复杂的形式比如随机梯度下降(SGD),批量梯度下降(BG),小批量梯度下降(MBGD),主要是为了在大数据集上更有效地工作,或者更好地应对高维数据。
3、神经网络基础
3.1 神经元
神经元也叫感知器,有输入权重、激活函数和输出构成。
输入:每个感知器可以接收多个输入(x_1 x_2....),每个输入对应一个权重W_i,还有一个偏置项b
激活函数:模拟生物神经抑制部分信号通过特定信号,所以引入非线性,比如使用阶跃函数、ReLU函数、Sigmoid函数、Tanh函数。
输出:感知器的输出由输入、输入权重和激活函数共同表达y=f(w*x+b)
3.2 前向传播
前向传播是指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量和输出值的过程。
3.3 反向传播
反向传播依据链式法则,对神经网络沿着从输出层到输入层的顺序,依次计算并存储目标函数有关神经网络各层中间变量及参数的梯度。 前向传播是和最优化方法(如梯度下降算法)结合使用,计算损失函数与网络中所有权重的梯度,并将梯度反向传播来更新权重以最小化损失函数,从而实现训练人工神经网络的算法。
3.4 神经网络
神经网络是一种模仿生物神经网络的结构和功能的数学模型,有大量人工神经元来连接,具备计算推理和决策等功能。分为输入层、隐藏层和输出层。隐藏层较多的神经网络叫做深度神经网络,深度学习研究使用的是使用深度神经网络的机器学习方法。
神经网络的每个节点都有特定的激活函数,两个节点间有一个称为权重的加权值,影响网络的输出值的有:节点的数量、网络的连接方式、权重、和激活函数。
神经网络的一般训练过程,首先对模型参数进行初始化,交替进行前向传播和反向传播,并根据反向传播计算的梯度使用梯度下降算法迭代模型参数。
通常训练比推理占用更多内存的原因:反向传播中需要复用前向传播中计算并存储的中间变量和避免重复计算,这种复用导致前向传播完成后也不能立即释放存储中间变量的内存;而推理阶段,只需完成前向传播得到网络的预测结果。
4、模型训练的一般步骤
准备数据集;
构建神经网络模型;
训练模型,包括输入数据、计算损失、梯度反向传播和更新参数;
评估模型性能
结尾森哥说:深度学习神经网络的核心其实东西并不多,拆分出来来看,结合一些注释和图解可以很好的理解其构成。这部分内容结合卷积就可以构成机器视觉领域应用广泛的卷积神经网络;结合记忆单元广泛应用于自然语言处理。