Neural Networks

数据集

THE MNIST DATABASE

Normalization

batch normalization

  • batch维度做标准化
    • Internal Covariate Shift
    • 缓解梯度消失
    • nlp中句子长度不一致比较麻烦

layer normalization

  • dim维度做标准化

激活函数

sigmoid

$f\left({x}\right)=\frac {1}{1+e^{-x}}$

  • 缺点
    • 梯度消失
    • Sigmoid 的 output 不是0均值(即zero-centered)
      • 这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:如x>0, f=wTx+bx>0, f=wTx+b,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。 当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响

tanh

读作:Hyperbolic Tangent

$tanh\left({x}\right)=\frac {e^{x}-e^{-x}}{e^{x}+e^{-x}}$

  • 优点
    • 解决了Sigmoid函数的不是zero-centered输出问题
    • Relu(最常用)

$relu\left({x}\right)=max(0,x)$

  • 优点
    • 解决了gradient vanishing问题 (在正区间)
    • 计算速度非常快,只需要判断输入是否大于0
    • 收敛速度远快于sigmoid和tanh
  • 缺点
    • ReLU的输出不是zero-centered
    • Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法

参考1 https://blog.csdn.net/tyhj_sf/article/details/79932893

Leaky ReLU

$f\left({x}\right)=max(ax,x)$

ELU(Exponential Linear Units)

GELU

  • bert Intermediate层最常用的激活函数

https://zhuanlan.zhihu.com/p/349492378

损失函数

MSE 均方误差(回归)

MSE=1ni=1n(yipredict(yi))2 MSE = \frac{1}{n}\sum_{i=1}^n (yi-predict(yi))^2

CrossEntropyLoss 交叉熵损失函数(分类)

label smoothing

多分类场景,onhot的真实标签容易过拟合,所以进行修正

https://cloud.tencent.com/developer/article/1815786

对数似然损失函数

keras

全连接层Dense

# as first layer in a sequential model:
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# now the model will take as input arrays of shape (*, 16)
# and output arrays of shape (*, 32)

# after the first layer, you don't need to specify
# the size of the input anymore:
model.add(Dense(32))

Flatten

Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。

Dropout(2012年,Hinton)

正则化

L2

  • 在原来的损失函数基础上加上权重参数的平方和:
  • 在原来的损失函数基础上加上权重参数的绝对值

AUC&ROC

  • Receiver Operating Characteristic 纵坐标 TPR = TP/P = TP/(TP+FN) 横坐标 FPR = FP/N = FP/(FP+TN)

Area Under Curve

Precision&Recall%F1

Precision = TP/(TP+FP) Recall = TP/(TP+FN) F1 = (P*R)/((P+R)/2)

results matching ""

    No results matching ""