卷积神经网络基础

因为毕设要用深度学习的方法来做图像质量评价,选了一篇论文研究,用的是Kang_Convolutional_Neural_Networks_2014_CVPR_paper,Github上有实现的代码,但是看不懂,就回头补卷积神经网络的基础。以下内容是个人笔记。

卷积神经网络学习笔记

1.名词解释

  1. softmax函数:也称归一化指数函数,它能将一个含任意实数的K维向量 Z 压缩”到另一个K维实向量 σ(Z) 中,使得每一个元素的范围都在 (0, 1) 之间,并且所有元素的和为1。该函数的形式通常按下面的式子给出:
    卷积神经网络基础_第1张图片

    python实现代码:

    import math
    z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
    z_exp = [math.exp(i) for i in z]  
    print(z_exp)  # Result: [2.72, 7.39, 20.09, 54.6, 2.72, 7.39, 20.09] 
    sum_z_exp = sum(z_exp)  
    print(sum_z_exp)  # Result: 114.98 
    softmax = [round(i / sum_z_exp, 3) for i in z_exp]
    print(softmax)  # Result: [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]
    

    python使用 numpy 实现的代码:

    import numpy as np
    z = np.array([1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0])
    print(np.exp(z)/sum(np.exp(z)))
    
  2. ReLU函数:线性整流函数(Rectified Linear Unit),又称修正线性单元。是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。

    斜坡函数:f(x) = max(0, x) = max(0, w.t * x + b)

  3. 超参数

    在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

  4. LRN(Local Response Normalization, 局部响应归一化)

    神经生物学有一个概念叫“侧抑制”,是指激活的神经元会抑制相邻的其他神经元。归一化的目的就是“抑制”。局部归一化就是借鉴“侧抑制”的思想实现局部抑制。数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。

  5. BN(Batch Normalization)

    1. 可以选择较大的学习率,使得训练速度增长很快,具有快速收敛性。

    2. 可以不去理会Dropout,L2正则项参数的选择,如果选择使用BN,甚至可以去掉这两项。

    3. 去掉局部响应归一化层。(AlexNet中使用的方法,BN层出来之后这个就不再用了)

    4. 可以把训练数据打乱,防止每批训练的时候,某一个样本被经常挑选到。

2.基本结构

​ 卷积神经网络基本由卷积层(Convolution Layer)池化层(Pooling Layer)、**全连接层(Full Connected Layer)**通过不同的组织形式构成,最后使用激活函数处理一维向量得到结果。

  1. 卷积层

    卷积运算就是以输入中的与filter中的大小相同的块中的对应元素位置相乘再求和,分为有效(valid)卷积和相同(same)卷积两种,有效卷积就是没有padding, 相同卷积就是加padding使得输出的尺寸与原输入尺寸相同

    filter/kernel padding(在图像周围加空白像素点) stride(步长)

    二维:输入n*n,filter = f * f,输出[(n + 2 * p - f) / s + 1] * [(n + 2 * p - f) / s + 1],或者取下限

    三维:输入n * n * n_c, filter = f * f * n_c,输出[(n + 2 * p - f) / s + 1] * [(n + 2 * p - f) / s + 1] * n_f(filter的个数)

  2. 池化层

    分为最大(max)池化平均(average)池化两种,对和filter大小相同的块取最大值或计算平均值,通常最大池化的效果更好。

  3. 全连接层

3.评价标准

  1. SROCC(the Spearman rank-order correlation coefficient):Spearman秩序相关系数本身就不是衡量线性相关的,而是衡量秩序的相关性的。设有两组序列X和Y,其秩序为R(X)和R(Y),这里R(Xi)=k代表Xi是序列X中的第k大(或第k小),则SROCC(X, Y) = PLCC(R(X), R(Y)),其中PLCC是Pearson线性相关系数。
    SROCC被认为是最好的非线性相关指标,这是因为,SROCC只与序列中元素的排序有关。因此即使X或Y被任何单调非线性变换作用(如对数变换、指数变换),都不会对SROCC造成任何影响,因为不会影响元素的排序。
  2. KROCC:Kendall秩序相关系数(KROCC),它的定义是pairwise的:KROCC = (同序对数-逆序对数) / 总对数 (总对数=n(n - 1)/2)它的性质与SROCC类似,但是比较抖。
  3. PLCC:是用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系。
  4. MSE(Mean Squared Error) :均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。
  5. RMSE:均方误差:均方根误差是均方误差的算术平方根
  6. MAE:平均绝对误差
  7. OR:离出率

PS:对于连续输出的机器学习模型或简单的回归拟合,发Paper的话,一般要放SROCC和PLCC,这两个标准是最重要的,可以很好地衡量模型的非线性相关性和线性相关性。偶尔也会放KROCC和RMSE(方均根误差)。但是SROCC是比PLCC更为根本的指标,因为一个复杂模型总可以用一些附加的非线性变换来补正,使得PLCC更高一些,而SROCC却不能被这些附加非线性变换来影响。

你可能感兴趣的:(卷积神经网络)