1.阅读论文

AlexNet论文地址

  • 论文作者的目的是什么或实现了什么?

较于传统的机器学习方法,在面对数量大,类别更且分辨率高的数据集时,我们需要一个更深更宽的模型。(To learn about thousands of objects from millions of images, we need a model with a large learning capacity.)

  • 新方法的关键点是什么?

1.Relu**函数(同时期另外提出的f(x)=tanh(x)f(x) = |tanh(x)|效果对比)
2.当时期下的多GPU训练(当时的硬件条件有限)
3.LRN(Local Response Normalization)方法
Keras实现AlexNet(论文复现【1】)
4.Overlapping Pooling(指kernel小于image size的Pooling)
5.Reducing Overfitting(1.Data Augmentation(数据增强)2.Dropout方法)

  • 还有哪些这方面的研究?
  • 论文的结构图
    Keras实现AlexNet(论文复现【1】)
    用时:45分钟

2.模型概览
  • 模型的组成部分
COMPONENT TYPE
Convolution(卷积) Convolutions
Grouped Convolution(分组卷积) Convolutions
Dense Connections(全连接) Feedforward Networks
Dropout Regularization
Local Response Normalization(局部响应归一化) Normalization
Maxpooling(最大池化) Pooling Operations
Relu Activation Functions
Softmax Output Functions

3.模型细节
  • Local Response Normalization(局部响应归一化)

1.在Keras中可以直接将tf.nn.local_response_normalization封装成Layer进行调用,完成模型构建,但不懂其原理。
2.查阅资料【写得真棒!】


开始理解模式!

在AlexNet论文中给出的公式如下所示【写得是啥?】
Keras实现AlexNet(论文复现【1】)
为什么要Normalization?

Normalization是为了限制无界**函数的输出。 如ReLU,ELU等等。

什么是Local Response Normalization?

LRN受Lateral inhibition所启发,Lateral inhibition指的是神经生物学中强烈兴奋神经元会抑制其邻近神经元表达的一种现象:“这会导致局部最大值形式的峰值出现,从而在该区域产生对比度并增加感官知觉。”(我的理解是,地主出现在江湖,以其强大开始镇压周围百姓,抢夺金钱,时代更替,要改变过去的现象,开始斗地主,因为地主剥削百姓,其臭名昭著与平凡的百姓成鲜明对比,人民军队一下就发现了地主。)

比较正规的解释:

LRN is a non-trainable layer that square-normalizes the pixel values in a feature map in a within a local neighborhood.(LRN是不可训练的图层,用于对局部邻域内的特征图中的像素值进行平方归一化。)

Local Response Normalization有两种

按照当前像素点,可以把LRN分为两种:

Keras实现AlexNet(论文复现【1】)

1.Inter-Channel LRN(通道间LRN)

顾名思义,在Inter-Channel LRN中,定义的邻居,是以通道方向来划分,继续往下看。

Keras实现AlexNet(论文复现【1】)
计算的公式如上图所示,其中:

  • ii指得是,第ii个kernel
  • ax,ya_{x,y}bx,yb_{x,y},分别指归一化前后(x,y)(x,y)点处的像素值
  • nn,指的是要计算时与"邻近点"的距离
  • NN,是通道的总数
  • kk,常数,避免分母为0的情况出现
  • αα,归一化常数
  • ββ,对比常数

综上,超参数有(k,α,β,n)(k,α,β,n),当其取值为(0,1,1N)(0,1,1N)时,即是Standard Normalization,在上示图中第一行,可知其n=2n=2N=4N=4

举个栗子:
Keras实现AlexNet(论文复现【1】)

在上图中,不同颜色泛指不同的通道,根据上述可知,N=4N=4

我们对超参数取值为(k,α,β,n)=(0,1,1,2)(k,α,β,n)=(0,1,1,2),其中:

  • n=2n=2指的是,在计算位置(i,x,y)(i,x,y)的归一化结果值时,我们要相应考虑它的上一个filterfilter和下一个filterfilter在同一位置的值,即(i1,x,y)(i-1,x,y)(i+1,x,y)(i+1,x,y)
  • 在上图中的,(i,x,y)=(0,0,0)(i,x,y)=(0,0,0)处,我们可得其下一个filterfilter(i+1,x,y)=(1,0,0)(i+1,x,y)=(1,0,0)的像素值为1,上一个filterfilter不存在,所以通过公式:

b0,01=a0,01j=max(0,0)min(3,2)(a0,0j)2=0.5 b^{1}_{0,0}=\frac{a^{1}_{0,0}}{\sum^{min(3,2)}_{j=max(0,0)}(a^{j}_{0,0})^2}=0.5

以此类推,计算其它的像素值。

2.Intra-Channel LRN(通道内LRN)

此时的计算公式应该是这样的:

Keras实现AlexNet(论文复现【1】)

  • (W,H)(W,H)指的是,在当前Feature Map的宽度与高度,如下图所示的(W,H)=(5,5)(W,H)=(5,5)
  • 其计算的步骤与通道间LRN计算的方式一致;
    Keras实现AlexNet(论文复现【1】)
    比较

通道间LRN与通道内LRN的最大区别,便在于其定义的“邻居”区别,在通道间其对比的坐标点应为(x,y,c)(x,y,c)其中的cc指的是通道,通道内LRN对比坐标点应为(x,y)(x,y),前者是3D内的归一化,后者是2D内的归一化。

在reddit上的提问与回答
Tensorflow的官方实现接口


  • Dropout
  • Grouped Convolution(分组卷积)

AlexNet里面使用的初衷是因为单GPU的硬件资源不够,但在后续的许多模型借鉴其思想:”使用一组​​卷积,然后每层多个内核,得到每层多个通道输出,再进行整合。“
诸如ResNeXt模型等中也表明,能通过它来提高准确性。

To do list:
Dropout


4.数据集的准备
  • 准备数据集

1.Hackathon Blossom(102种花分类)
链接:https://pan.baidu.com/s/1ZPeKrPLR2_81qgi012DgEg
提取码:dk96
2.104 Flowers Garden of Eden(104种花分类)
链接:https://pan.baidu.com/s/1VIEVF3-dMOGiFPyl4hsxgA
提取码:kdur
3…后续添加


5.模型结构图

相关文章:

  • 2021-08-22
  • 2021-10-08
  • 2022-12-23
  • 2022-12-23
  • 2021-07-28
  • 2021-10-04
  • 2021-04-17
猜你喜欢
  • 2022-12-23
  • 2021-07-01
  • 2021-09-16
  • 2022-01-23
  • 2022-01-14
  • 2022-01-16
  • 2021-12-14
相关资源
相似解决方案