斯坦福CS231n(视觉识别卷积神经网络)课程学习笔记

本文对重点知识做记录,加深记忆以及备忘
中文链接https://zhuanlan.zhihu.com/p/21930884?refer=intelligentunit

常用的激活函数:

Sigmoid
Tanh
ReLU(最常使用)
Leaky ReLU
Maxout

数据的预处理

一般对数据归一化处理,先进行零中心化,即对于每个特征,将所有数据减去均值。再归一化,即对于每个特征,将所有数据除以特征绝对值的最大值,使得特征都在[-1,1]区间。
数据预处理特别重要
白化因为太费资源,并不常用。
在预处理时,要先对训练集做预处理,并记录预处理使用的参数(均值,最大值或方差),然后用同样的参数对测试集和验证集做同样的预处理。不能对所有数据做同样的预处理。

神经网络权值初始化

使用ReLU作为激活函数时,权值的方差因为 2.0/n ,n为输入特征的数量
批量归一化

正则化

正则化能够降低过拟合风险
L2正则化,会使权值趋向于满足 N(0,f(λ)=1λ) 的正态分布,降低模型复杂度,降低过拟合风险
L1正则化,有使权值稀疏的效果
Dropout,p值一般选择0.5

优化方法

动量方法:经常使用Nesterov动量+SGD
学习率退火:使用一个固定的学习率来进行训练的同时观察验证集错误率,每当验证集错误率停止下降,就乘以一个常数(比如0.5)来降低学习率
逐参数适应学习率方法:此方法不使用统一的学习率,对于每个权值,学习率都不同。

卷积神经网络各种组件

卷积层
池化层
全链接层

如何构造卷积神经网络

两个例子:
一,VGGNet

INPUT: [224x224x3]        memory:  224*224*3=150K   weights: 0
CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*3)*64 = 1,728
CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*64)*64 = 36,864
POOL2: [112x112x64]  memory:  112*112*64=800K   weights: 0
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*64)*128 = 73,728
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*128)*128 = 147,456
POOL2: [56x56x128]  memory:  56*56*128=400K   weights: 0
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*128)*256 = 294,912
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
POOL2: [28x28x256]  memory:  28*28*256=200K   weights: 0
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*256)*512 = 1,179,648
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
POOL2: [14x14x512]  memory:  14*14*512=100K   weights: 0
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
POOL2: [7x7x512]  memory:  7*7*512=25K  weights: 0
FC: [1x1x4096]  memory:  4096  weights: 7*7*512*4096 = 102,760,448
FC: [1x1x4096]  memory:  4096  weights: 4096*4096 = 16,777,216
FC: [1x1x1000]  memory:  1000 weights: 4096*1000 = 4,096,000

TOTAL memory: 24M * 4 bytes ~= 93MB / image (only forward! ~*2 for bwd)
TOTAL params: 138M parameters

引自https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit

该网络的特点是全部采用3*3,1步长的卷积核和2*2的max池化,采用了0填充

二,Alexnet
斯坦福CS231n(视觉识别卷积神经网络)课程学习笔记_第1张图片

下面的详细的结构图,图片均出自Bin的专栏:http://blog.csdn.net/xbinworld

斯坦福CS231n(视觉识别卷积神经网络)课程学习笔记_第2张图片
斯坦福CS231n(视觉识别卷积神经网络)课程学习笔记_第3张图片
这里写图片描述
这里写图片描述
斯坦福CS231n(视觉识别卷积神经网络)课程学习笔记_第4张图片
斯坦福CS231n(视觉识别卷积神经网络)课程学习笔记_第5张图片
斯坦福CS231n(视觉识别卷积神经网络)课程学习笔记_第6张图片
该网络与VGGNet不同,采用了尺寸递减的卷积核(11,5,3),以及递减的步长(4,2,1),有全链接层(FC),且在全连接层使用了dropout,采用的max池化和0填充。

以上的两种标准的卷积神经网络构建方式。

你可能感兴趣的:(机器学习)