在深度学习中有一个不常用的方法:LRN,首次提出于AlexNet论文,但现在一般会被Dropout等方法给替代
1.作用
在深度学习训练时提高准确度。
2.LRN原理
仿造生物学上活跃的神经元对相邻神经元的抑制现象(侧抑制(个人认为类似于生物学上的顶端优势))。通过对局部神经元的活动创建竞争机制,使得其中响应较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
3.公式
$ b^i_{x,y} = a^i_{x,y}/(k + \alpha \sum_{j=max(0, i-n/2)}^{min(N-1, i+n/2)}{(a_{x,y}^{j})^2})^{\beta} $
4.公式符号解释
a:表示卷积后的输出结果,这里卷积包括卷积操作和池化操作,输出结果是一个四维数组[batch, height, width, channel]
$ a^i_{x,y} $:表示输出结果中的一个位置[a,x,y,i],即第a张图片的第i个通道的高度为x、宽度为y的点
N:表示Kernal的总数
n:表示邻近位置上kernal map的数量
n/2, k, $ \alpha $, $ \beta $为自定义超参数
i:表示通道位置
5.对应tensorflow函数
$tf.nn.lrn(input, depth_radius=None, bias=None, alpha=None, beta=None, name=None)$
其中:
- $a -> input$
- $n/2 -> depth_radius$
- $k -> bias$
- $\alpha -> alpha$
- $\beta -> beta$
6.其他理解
- 归一化是为了实现抑制
- $\sum$是对同一通道的值求和,因为当$j$改变时,$x,y$是不变的
- 当$k=0,\alpha=1,\beta=1$时,公式相当于是当前点的值占该通道内所有点的平方和的百分比
- 名称中的“局部”应该就是指的某一个通道
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。