Bootstrap

深度学习——激活函数ReLu、LReLu、PReLu原理解析

深度学习——激活函数ReLu、LReLu、PReLu原理解析

简介

论文链接: https://arxiv.org/abs/1502.01852
在这里插入图片描述

  • 由于项目需要,需要了解msra 权重初始化方法原理, 正好Kaiming 大神这篇论文提出了PReLu。本博客主要介绍PReLu。文中两个创新点是使用PReLu和msra初始化后,在I ImageNet 2012 classification dataset上,达到top5=4.94%,超越了人类识别水平。

原理分析

激活函数主要来做非线性变换,目前我知道激活函数有20多种,CV领域主要用到是sigmoid、ReLu系列。

  • ReLu公式
    f ( y i ) = { y i i f , y i > 0 0 i f , y i ≤ 0 ( 1 ) f(y_i)=\left\{ \begin{aligned} y_i & & {if, \quad y_i >0 } \\ 0 & & {if ,\quad y_i \leq0 } \\ \end{aligned} \qquad(1)\right. f(yi)={yi0if,yi>0if,yi0(1)
  • Leaky ReLu(LReLu)公式
    f ( y i ) = { y i i f , y i > 0 0.01 ∗ y i i f , y i ≤ 0 ( 2 ) f(y_i)=\left\{ \begin{aligned} y_i & & {if, \quad y_i >0 } \\ 0.01*y_i & & {if ,\quad y_i \leq0 } \\ \end{aligned} \qquad(2)\right. f(yi)={yi0.01yiif,yi>0if,yi0(2)
  • PReLu公式
    f ( y i ) = { y i i f , y i > 0 a i ∗ y i i f , y i ≤ 0 ( 3 ) f(y_i)=\left\{ \begin{aligned} y_i & & {if, \quad y_i >0 } \\ a_i * y_i & & {if ,\quad y_i \leq0 } \\ \end{aligned} \qquad(3)\right. f(yi)={yiaiyiif,yi>0if,yi0(3)
  • The motivation of LReLU is to avoid zero gradients, PReLu是为了防止ReLu在小于0的情况下,梯度为0。根据文中作者介绍,LReLu相对与ReLu对模型影响相差不大。故作者提出了PReLu,通过学习 a i a_i ai,让模型更加完美。其实 P R e L u = R e L u + a i ∗ m i n ( 0 , y i ) PReLu= ReLu+a_i *min(0,y_i) PReLu=ReLu+aimin(0,yi)
  • a i a_i ai = 0.01时候,等于LReLu.
  • a i a_i ai 中的 i i i是指 i t h i^{th} ith channel的参数, y i y_i yi是指 i t h i^{th} ithfeature map.

PReLu 反向传播过程

  • 来自上一层的delta为 δ \delta δ, 求 a i a_i ai梯度 ,根据 chain rule
  • 当一个层中a_i每个通道不共享时候
    ∂ δ ∂ a i = ∑ i = 1 w ∗ h ∂ δ ∂ f ( y i ) ∂ f ( y i ) ∂ a i = ∑ i = 1 w ∗ h ∂ δ ∂ f ( y i ) { 0 i f , y i > 0 y i i f , y i ≤ 0 ( 4 ) \frac{\partial \delta}{\partial a_i } = \sum_{i=1}^{w*h}\frac{\partial \delta}{\partial f(y_i)} \frac{\partial f(y_i)}{\partial a_i} = \sum_{i=1}^{w*h}\frac{\partial \delta}{\partial f(y_i)} \left\{ \begin{aligned} 0 & & {if, \quad y_i >0 } \\ y_i & & {if ,\quad y_i \leq0 } \\ \end{aligned} \qquad(4)\right. aiδ=i=1whf(yi)δaif(yi)=i=1whf(yi)δ{0yiif,yi>0if,yi0(4)
  • 当一个层中只要一个a时,也就是所有通道共享。
    ∂ δ ∂ a i = ∑ j = 1 c h a n n e l ∑ i = 1 w ∗ h ∂ δ ∂ f ( y i ) ∂ f ( y i ) ∂ a i = ∑ j = 1 c h a n n e l ∑ i = 1 w ∗ h ∂ δ ∂ f ( y i ) { 0 i f , y i > 0 y i i f , y i ≤ 0 ( 5 ) \frac{\partial \delta}{\partial a_i } = \sum_{j=1}^{channel}\sum_{i=1}^{w*h}\frac{\partial \delta}{\partial f(y_i)} \frac{\partial f(y_i)}{\partial a_i} = \sum_{j=1}^{channel}\sum_{i=1}^{w*h}\frac{\partial \delta}{\partial f(y_i)} \left\{ \begin{aligned} 0 & & {if, \quad y_i >0 } \\ y_i & & {if ,\quad y_i \leq0 } \\ \end{aligned} \qquad(5)\right. aiδ=j=1channeli=1whf(yi)δaif(yi)=j=1channeli=1whf(yi)δ{0yiif,yi>0if,yi0(5)
  • update a i a_i ai
    adopt the momentum method when updating ai
    Δ a i = u Δ a i + ε ∂ δ ∂ a i ( 6 ) \varDelta a_i = u\varDelta a_i+\varepsilon \frac{\partial \delta}{\partial a_i}\qquad(6) Δai=uΔai+εaiδ(6)
    u u umomentum, ε \varepsilon ε代表学习速率。use ai = 0:25 as the initialization
    throughout this pape

实验结果

文中主要对 a a a做了两种实验,一种是一个层只要一个a,也就是share模式。另外一种是一个层中每个通道都有一个a,wise模式。实验表明wise结果更好。
在这里插入图片描述

;