深度学习基本概念
Function
上一个例子中,拟合的曲线是线性的,显然过于简单了。如果真实的函数是一个比较复杂的曲线,应该如何构造函数(也就是Model
,带未知参数的函数)呢?
上图展示了如何拟合一个复杂的函数,就是一系列的sigmoid
函数加上常数。
对于平滑的曲线函数,可以通过在曲线上取多个点形成的折线函数来近似,如上图所示。
这样就形成了新的Model
下图所示蓝色虚线框内式子 b i + ∑ j w i j x j b_i+\sum_jw_{ij}x_j bi+∑jwijxj展开的情况
将 b i + ∑ j w i j x j b_i+\sum_jw_{ij}x_j bi+∑jwijxj的结果记作 r r r,带入到sigmoid函数
将sigmoid函数的结果记作 a a a,计算得到最终的 y y y
最终的函数计算流程如下所示
将所有未知参数放入一个向量 θ \theta θ 中
回到机器学习训练的三个步骤,现在已经定义好了函数,也就是Model
,接下来是定义损失函数和优化。
Loss
Loss的计算方式和之前还是一样的,只不过现在的未知参数换成了 θ \theta θ
Optimization
最后是优化模型,找到使Loss最小的模型参数,仍然是用梯度下降法。
反复迭代,直到满足迭代次数或者梯度向量为零向量(参数较多情况下几乎不可能)
这里引入了新的概念 batch,将总的训练集随机划分成一个个 batch,用每一个 batch 计算一个 Loss,计算梯度,更新一次 θ \theta θ,所有的 batch 都算过一遍后叫作一个 epoch。因此一般一个 epoch 包含若干个 update。
sigmoid函数也可以用 ReLU 函数代替,它们被称作 Activation function(激活函数)
引入深度学习
激活函数可以嵌套,把上一层激活函数的结果作为下一层激活函数的输入,这样函数的未知参数就会更多了,模型也更加复杂。
每个 sigmoid 函数叫做 Neuron(神经元),整体就叫做 Neuron Network(神经网络),每一层激活函数叫做 hidden layer(隐藏层)。由于有很多层隐藏层,意味着 deep,所以叫深度学习。
hyperparameters
人手设的东西叫 hyperparameters(超参数),目前有
- η \eta η(学习速率)
- 函数中有几个 sigmoid
- batch size 的大小
- layer的层数。
什么是超参数?
机器学习模型中一般有两类参数:一类需要从数据中学习和估计得到,称为模型参数(Parameter)—即模型本身的参数。比如,线性回归直线的加权系数(斜率)及其偏差项(截距)都是模型参数。还有一类则是机器学习算法中的调优参数(tuning parameters),需要人为设定,称为超参数(Hyperparameter)。比如,正则化系数λ,决策树模型中树的深度。
参数和超参数的区别:
模型参数是模型内部的配置变量,需要用数据估计模型参数的值;模型超参数是模型外部的配置,需要手动设置超参数的值。机器学习中一直说的“调参”,实际上不是调“参数”,而是调“超参数”。