深度学习基础概念解析

深度学习作为机器学习的一个分支,其核心在于模仿人脑的处理机制,使机器能够处理和解决复杂的问题。本文将详细介绍深度学习中的几个关键概念,包括深度学习的定义、神经网络的工作原理、激活函数损失函数以及优化器。

1.深度学习是什么?

深度学习(Deep Learning,简称DL)是机器学习的一个子集,它通过输入数据训练模型,并基于这些输入预测输出。与人类大脑相似,深度学习模型由多个神经元组成,这些神经元可以被分为三个层次:输入层、隐藏层和输出层。其中,“深度”指的是存在多个隐藏层,所有的计算都在隐藏层中完成。

2. 深度神经网络的工作原理

以火车票价格预测为例,可以看到深度神经网络(Deep Neural Network,简称DNN)是如何工作的。在这个例子中,有三个输入:出发站、到达站和出发日期。输入层将接收这些输入并传递给隐藏层,隐藏层将执行数学计算,最终输出层将给出预测的价格。隐藏层的数量和每个隐藏层中的神经元数量是超参数,需要来决定。

3. 激活函数

每个神经元都有一个激活函数,它负责执行计算。不同的层可以有不同的激活函数,但同一层次的神经元使用相同的激活函数。在DNN中,基于提供的权重和输入计算加权输入的和,然后激活函数作用于这个加权和,将其转换为输出。

激活函数之所以重要,是因为它们帮助模型学习数据集中存在的复杂关系。如果不用激活函数,那么输出将没有特定的范围,这将使得计算变得困难。非线性激活函数总是首选,因为它为数据集增加了非线性,否则只能形成一个简单的线性回归模型,无法充分利用隐藏层的优势。

不同的激活函数有不同的使用场景:

  • Sigmoid:适用于二分类问题,但可能导致梯度消失问题,计算成本较高,范围是(0,1)。
  • Softmax:是Sigmoid函数的推广,用于多类分类问题,通常用于网络的最后一层,保持输出在(0,1)范围内。
  • tanh:与Sigmoid类似,但范围是(-1,1),也可能导致梯度消失问题。
  • ReLU:取0和输入张量的逐元素最大值,max(0,x),不会导致梯度消失问题,但可能导致梯度爆炸问题,可以通过杀死负值神经元来增加网络的稀疏性,因此可以更快。

ReLU或其变体通常用于隐藏层,而Sigmoid/Softmax通常用于最终层,用于二分类/多类分类问题。

4. 损失/成本函数

为了训练模型,将输入(出发地点、到达地点和出发日期)提供给网络,并让它预测输出。然后,将预测输出与实际输出进行比较,并计算两者之间的误差。这个误差是通过损失/成本函数计算的。这个过程在整个训练数据集上重复,得到平均损失/误差。目标是最小化这个损失,使模型更准确。

损失函数的选择取决于问题类型:

  • 回归问题:使用均方误差(MSE),当需要预测实际数值量时使用。
  • 二分类/多类分类问题:使用交叉熵。
  • 最大边际分类:使用Hinge损失。

一旦计算出一次迭代的损失,优化器就用来更新权重。优化器之所以必要,是因为它们可以自动更新权重,帮助找到损失/成本函数的最小值。深度学习的魔力在于,找到成本函数的最小值需要多次迭代整个数据集,因此需要大量的计算能力。更新这些权重的常用技术是梯度下降。

  • 批量/普通梯度下降:对整个数据集计算梯度以执行一次权重更新,结果好但可能慢且需要大量内存。
  • 随机梯度下降(SGD):对每个训练数据点更新权重,因此频繁更新可能导致目标函数波动。
  • 小批量梯度下降:结合了批量梯度和SGD的优点,是首选算法,减少了更新频率,从而可以导致更稳定的收敛。
  • Adagrad:在稀疏数据的情况下是首选算法,不需要手动调整学习率,与GD不同。默认值0.01是首选。
  • Adadelta:减少了Adagrad的单调递减学习率,不需要默认学习率。
  • RMSprop:RMSprop和Adadelta是同时为同一目的开发的。学习率=0.001是首选。
  • Adam:它适用于大多数问题,是首选算法,被视为RMSprop和动量的组合。AdaMax和Nadam是Adam的变体。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:15216758379