深度学习作为机器学习的一个分支,其核心在于模仿人脑的处理机制,使机器能够处理和解决复杂的问题。本文将详细介绍深度学习中的几个关键概念,包括深度学习的定义、神经网络的工作原理、激活函数、损失函数以及优化器。
深度学习(Deep Learning,简称DL)是机器学习的一个子集,它通过输入数据训练模型,并基于这些输入预测输出。与人类大脑相似,深度学习模型由多个神经元组成,这些神经元可以被分为三个层次:输入层、隐藏层和输出层。其中,“深度”指的是存在多个隐藏层,所有的计算都在隐藏层中完成。
以火车票价格预测为例,可以看到深度神经网络(Deep Neural Network,简称DNN)是如何工作的。在这个例子中,有三个输入:出发站、到达站和出发日期。输入层将接收这些输入并传递给隐藏层,隐藏层将执行数学计算,最终输出层将给出预测的价格。隐藏层的数量和每个隐藏层中的神经元数量是超参数,需要来决定。
每个神经元都有一个激活函数,它负责执行计算。不同的层可以有不同的激活函数,但同一层次的神经元使用相同的激活函数。在DNN中,基于提供的权重和输入计算加权输入的和,然后激活函数作用于这个加权和,将其转换为输出。
激活函数之所以重要,是因为它们帮助模型学习数据集中存在的复杂关系。如果不用激活函数,那么输出将没有特定的范围,这将使得计算变得困难。非线性激活函数总是首选,因为它为数据集增加了非线性,否则只能形成一个简单的线性回归模型,无法充分利用隐藏层的优势。
不同的激活函数有不同的使用场景:
ReLU或其变体通常用于隐藏层,而Sigmoid/Softmax通常用于最终层,用于二分类/多类分类问题。
为了训练模型,将输入(出发地点、到达地点和出发日期)提供给网络,并让它预测输出。然后,将预测输出与实际输出进行比较,并计算两者之间的误差。这个误差是通过损失/成本函数计算的。这个过程在整个训练数据集上重复,得到平均损失/误差。目标是最小化这个损失,使模型更准确。
损失函数的选择取决于问题类型:
一旦计算出一次迭代的损失,优化器就用来更新权重。优化器之所以必要,是因为它们可以自动更新权重,帮助找到损失/成本函数的最小值。深度学习的魔力在于,找到成本函数的最小值需要多次迭代整个数据集,因此需要大量的计算能力。更新这些权重的常用技术是梯度下降。