关键词:神经网络、前向计算、反向传播、神经单元、最大边际损失、梯度检查,Xavier参数初始化,学习速率,Adagrad
1 神经网络基础
神经网络是具有非线性决策边缘的分类器族群。
1.1 神经元
神经元是接受n个输入并生成单一输出的通用计算单元。
影响输出结果的是神经元的参数,也叫权重。
常用的神经元有sigmoid或者binary logistic regression
或者把权重和偏差放在一起表达成
1.2 单层神经元
将上述概念扩展到多个神经元
为使表达简便,将激活函数、权重、偏差表达为
激活可以看成是加权化特征的指示,我们可以用来执行分类任务。
1.3 前向计算
考虑这个NER问题
"Museums in Paris are amazing"
我们想判断中间的Paris是不是一个named-entity
这里为了区分我们不仅要知道这个词出现在词向量窗口,还要了解这些词之间相互的关系。例如只有当in是第二个词时museum才是第一个词。
这种非线性关系无法直接用Softmax函数捕捉,而需要一个中间层。
1.4 最大边际目标函数
s是真实计算得分,s_c是错误计算得分
为了设定安全边际
我们可以将delta设定为1
1.5 反向传播
一般使用梯度下降或随机梯度下降来更新参数
反向传播是使用微分链法则来计算模型前向计算中使用参数的损失梯度。
1.6 反向传播-矩阵化
上面是计算一个给定模型参数的梯度,这里考虑一次性计算权重矩阵和偏差矩阵
对比逐个更新和矩阵更新,我们发现在MATLAB和Python等科学计算环境中矩阵计算更快。