一、前言
本次课程从线性模型的预测的局限出发,讲到预测更准确的分段线性曲线,再由组成的Hard Sigmoid函数,引出可以逼近Hard Sigmoid函数的Sigmoid函数,进而展开关于Sigmoid函数的单特征模型讨论,进而引出多特征模型,最后成功引出深度学习的基本概念,非常醍醐灌顶!以下是我整理的思维导图。
二、激活函数
1.激活函数的种类
文中提到了Sigmoid函数和ReLU,激活函数的选择还有很多种,比如:
书中提到“当然还有其他常见的激活函数,但 Sigmoid 跟 ReLU 是最常见的激活函数,接下来的实验都选择用了 ReLU,显然 ReLU 比较好”,搜索材料发现和反向传播算法有关,而文中最后提到了反向传播算法,但没有展开讨论,搜搜论文学习一下<(^-^)>
2.反向传播算法(BP优化算法)
深度神经网络可以看作是一个多层的复合函数。这个函数的好坏取决于我们如何优化目标函数,通常这个目标函数叫做损失函数(Loss function)。损失函数用来衡量我们模型的预测准确程度。常见的损失函数有均方误差(L2误差)、平均绝对误差(L1误差)、交叉熵等,本次学习过程中遇到的是L(θ)。
在找到最合适的网络参数(包括权重和偏置)的过程中,误差反向传播算法(Error Back Propagation,BP)本质上是随机梯度下降法的应用。误差反向传播算法从网络的输出层开始,计算误差,并通过递推公式逐层向前传播误差。然后,基于这些误差更新每一层的参数。就像是一个聪明的厨师助手。它从最终的菜肴味道(输出层)开始,逐步分析每一步的味道误差,并反向推算每种调料的效果,然后调整这些调料的量(?)。
3.什么是好的激活函数
首先学习一下经常听到的两个概念:
因为算法过程中计算误差项时每一层都要乘以本层激活函数的导数,因此,会发生很多次的导数连乘。如果激活函数的导数的绝对值小于1,多次连乘之后误差项很快会衰减到接近于0;而参数的梯度值由误差项计算得到,从而导致前面层的权重梯度接近于0,参数不能得到有效更新,这称为“梯度消失”问题。与之相反,如果激活函数导数的绝对值大于1,多次连乘后权重值会趋向于非常大的数,这称为“梯度爆炸”。这也是神经网络层次无法变得很深的原因。
所以ReLU函数被经常使用作为深度神经网络的激活函数:
1)该函数的导数为sgn(忽略在0处不可导的情形),计算简单,在正半轴导数为1,有效的缓解了梯度消失问题;
2)虽然它是一个分段线性函数,但它具有非线性逼近能力;使用ReLU激活函数的深度网络的本质是用分段(分片)线性函数(超平面)去逼近目标。
继续拿厨子做饭来比喻的意思大概就是:ReLU函数就像是一个理想的调料瓶:它的喷嘴设计得刚好,能够有效调整味道,避免过多或过少。
结束!