多层感知机(MLP)
隐藏层
- 线性模型对于多特征,以及特征之间相互作用的关系的预测是有可能出错的;即很多例子都并非唯一单调性,单层的线性模型时会出错的。
- 在网络层中加入一个或多个隐藏层来克服线性模型的限制,最简单的做法是将许多全连接层堆叠在一起,每一层输出到上面的层,直到生成最后的输出
- 输入 X∈Rn*d,n个样本的小批量,每个样本d个输入特征
- 隐藏表示 H∈ Rn*h,每个隐藏层有h个隐藏单元
- 隐藏层的权重表示 W(1)∈Rd*h,隐藏层偏置b(1)∈R1*h
- 输出层权重表示 W(2)∈Rh*q,输出层偏置b(2)∈R1*q
- 单隐藏层多层感知机的输出O∈Rn*q:
- 合并隐藏层:本质上具有隐藏层的多层感知机仍然是一个线性模型,只是参数有所改变。
- 为了发挥多层结构的潜力,需要激活函数。在仿射变换之后对每一个隐藏单元应用非线性的激活函数σ,一般有了激活函数,多层感知机不会退化成线性模型
- 多层感知机可以通过隐藏神经元捕捉到我们输入之间复杂的相互作用,这些神经元依赖每一个输入的值
激活函数
激活函数通过计算加权和并加上偏置来确定神经元是否应该被激活。它们是将输入信号转换为输出的可微运算。大多数激活函数都是非线性的。由于激活函数是深度学习的基础,下面简要介绍一些常见的激活函数。
ReLU函数
- 线性整流单元 Rectified linear unit
- 实现简单,同时在各种预测任务中表现良好
- 当输入为负,ReLU函数的导师为0,而当输入为正,导数为1
- 当输入值精确为0时是不可导的
- 变体
sigmoid函数(挤压函数)
- 对于一个定义域在R中的输入,sigmoid函数将输入变换区间(0,1)上的输出:将范围(-inf,inf)中的任意输入压缩到区间(0,1)中的某个值
- 阈值单元,阈值单元在其输入低于某个阈值时取值为0,高于为1
tanh函数
-
双曲正切(tanh)函数也能将其输入压缩到转换区间(-1,1)
-
keep going!