深度学习深入理解一:loss和优化器集锦

NLLLoss与CE

设m张图片,共n类,输入为m*n矩阵 input\\ 矩阵中每个元素代表该类得分\\ 1、sm = softmax(input) 将区间映射到0-1\\ 2、lg = log(sm) 求自然对数,得到纯负值 \\ 3、将负值取正,取label对应位置的数值,求平均\\ 步骤三即为nll_loss,步骤123合在一起为ce

 

Adam优化算法

原址(https://www.cnblogs.com/yifdu25/p/8183587.html)

是一阶优化算法,全称适应性矩估计(adaptive moment estimation)。在非凸优化问题中有如下优势:

基本机制:

Adam通过计算梯度的一阶矩估计和二阶矩估计而为不同参数设计独立的自适应学习率。算法计算了梯度的指数移动均值。

算法流程:

初始化参数向量、一阶矩向量、二阶矩向量和时间步。当参数没有收敛的时候,迭代更新各个部分:时间步长、参数的梯度、更新偏差的一阶矩估计和二阶矩估计,偏差修正的一阶矩估计和二阶矩估计


①、②:矩估计就是通过样本矩来估计总体中相应的参数(比如期望和方差)。对于随机变量,矩是其最广泛、最常用的数字特征。由辛钦大数定律、样本矩依概率收敛到总体矩。故而样本矩可以估计总体矩。 一阶矩是数学期望 二阶中心矩是方差

 

  • 计算高效

  • 内存需要的少

  • 梯度对角缩放不变

  • 适用于大规模数据优化目标

  • 适用于非稳态目标

  • 解决高噪声稀疏梯度问题

 

基于Gram矩阵的损失函数

gram矩阵计算的是两两特征之间的相关性。比如哪两个特征是同时出现的,哪两个特征是此消彼长的等等。同时gram矩阵的对角线元素还体现出每个特征在图像中出现的量。总之,Gram有助于把握整个图像的大体风格。有了表示风格的Gram Matrix,要度量两个图像风格的差异,只需比较他们Gram Matrix的差异即可。

首先给出gram矩阵的公式:

G_{ij}=\sum_{m,n}F_{i,m,n}F_{j,m,n}\\ 假设该层通道数为c,每个通道有k*t个像素,也就是有k个l维的特征 即有k个特征,则m,n<k\\ 也就是在计算两个特征通道(也就是两个特征图)之间的关系。这两个特征图究竟是此消彼长还是共存亡?\\ 最终得到的是一个c * c的gram矩阵\\ 矩阵的每个元素是就是两张特征图对应位置的累加和

假设该层通道数为c,每个通道有k*t个像素,也就是有k个l维的特征
即有k个特征,则m,n<k
也就是在计算两个特征通道(也就是两个特征图)之间的关系。这两个特征图究竟是此消彼长还是共存亡?
最终得到的是一个c * c的gram矩阵
矩阵的每个元素是就是两张特征图对应位置的累加和

累加和越大,说明两张特征图差异越明显。(这里是假设了每层的特征图都有归一化操作,例如sigmoid\ batchnorm),这是因为,当两数相加为定值时,平方和最小。于是,gram矩阵的元素反映了不同特征图的差异度。

现在摆脱公式的限制。我们可以考虑将特征图降维,一个特征图就是一个特征,那么这一层的输出有c个特征,gram矩阵表示了两两特征间的关系。这对于描述风格很重要。例如,梵高的画里蓝色总是天空,天空总是有星星。这样,gram矩阵拥有了风格描述的特性。

损失函数

损失函数公式如下:

l是层数。实践证明,gram损失函数不比交叉熵等函数,只放在最后一层就有很好的的效果。放在中间各层会有更好的表现。这因为神经网络浅层学颜色,深层学空间关系,逻辑结构。gram控制每一层的话,会将所有的风格特质都学到。

也就是在计算训练得到的结果和目标结果的距离。尽可能缩小gram矩阵距离。

tensorflow代码实现

gram矩阵代码:

noise_layer_fea = tf.reshape(noise_layer_fea, [-1, c]) 
​
noise_fea = tf.matmul(noise_layer_fea, noise_layer_fea, transpose_a = True)
​
#noise_layer_fea是每层得到的输出

损失函数:

loss_list = tf.square(noise_fea - source_fea) 
​
loss = tf.reduce_sum(loss_list) /tf.cast((4.0*h*h*w*w), tf.float32)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值