重庆市建设医院网站首页,wordpress 目录 伪静态,WordPress更新最新版本失败,十大房地产公司排行榜写在前面
搭建完网络层后#xff0c;在每层网络中都要进行前向计算#xff0c;下一步就是选择合适的误差函数来计算误差。其中均方差函数和交叉熵函数在深度学习中比较常见#xff0c;均方差函数主要用于回归问题#xff0c;交叉熵函数主要用于分类问题。 写在中间
均方差…写在前面
搭建完网络层后在每层网络中都要进行前向计算下一步就是选择合适的误差函数来计算误差。其中均方差函数和交叉熵函数在深度学习中比较常见均方差函数主要用于回归问题交叉熵函数主要用于分类问题。 写在中间
均方差函数 1 简单介绍
均方差函数(简称 MSE)把输出向量和真实向量映射到笛卡尔坐标系的两个点上通过计算这两个点之间的欧式距离(准确地说是欧式距离的平方)来衡量两个向量之间的差距 M S E ( y , o ) ≜ 1 d o u t ∑ i 1 d o u t ( y i − o i ) 2 \mathrm{MSE}(\boldsymbol{y},\boldsymbol{o})\triangleq\frac{1}{d_{\mathrm{out}}}\sum_{i1}^{d_{\mathrm{out}}}(y_i-o_i)^2 MSE(y,o)≜dout1∑i1dout(yi−oi)2 MSE 误差函数的值总是大于等于 0值越小越接近真实值。
当 MSE 函数达到最小值 0 时输出值等于真实标签此时神经网络的参数达到最优状态。 2 函数实现
# 均方差函数的实现有多种
import tensorflow as tf# 方法一
tf.reduce_mean(tf.square(y_true - y_pred))# 方法二
tf.keras.losses.MSE(y_true, y_pred) 交叉熵函数
介绍交叉熵函数之前我们先了解 熵 和 KL散度 这两个概念
熵 熵用来衡量信息的不确定度熵越大代表不确定性越大。
公式如下 H ( P ) ≜ − ∑ i P ( i ) log 2 P ( i ) H(P)\triangleq-\sum_iP(i)\log_2P(i) H(P)≜−∑iP(i)log2P(i) 熵的计算 熵怎样计算对于分类问题
如果某个样本的标签的 One-hot 编码为[0, 0, 0, 1]即这张图片的分类是唯一确定的不确定性为 0。它属于第 4 类的概率(为 4|) 1此标签的熵可以简单的计算为 − 0 ⋅ log 2 0 − 0 ⋅ log 2 0 − 0 ⋅ log 2 0 − 1 ⋅ log 2 1 0 -0\cdot\log_20-0\cdot\log_20-0\cdot\log_20-1\cdot\log_210 −0⋅log20−0⋅log20−0⋅log20−1⋅log210 如果某个样本的标签的 One-hot 编码为[0.1, 0.1, 0.1, 0.7]即这张图片的分类属于第四类的概率较大此标签的熵就可以计算为 − 0.1 ⋅ log 2 0.1 − 0.1 ⋅ log 2 0.1 − 0.1 ⋅ log 2 0.1 − 0.7 ⋅ log 2 0.7 ≈ 1.356 -0.1\cdot\log_20.1-0.1\cdot\log_20.1-0.1\cdot\log_20.1-0.7\cdot\log_20.7\approx1.356 −0.1⋅log20.1−0.1⋅log20.1−0.1⋅log20.1−0.7⋅log20.7≈1.356 很明显第二个结果的熵比第一个熵大不确定度也大得多因此最小化熵的过程也是最大化正确类别的预测概率的过程。从这个角度去理解交叉熵损失函数非常地直观易懂。
KL散度 如果我们对于同一个随机变量 i 有两个单独的概率分布 p(i) 和 q(i)我们可以使用 KL 散度来衡量这两个分布的差异
在深度学习中我们通常把真实的标签分布通常是 one-hot 编码视为 p把模型预测的概率分布视为 q。
KL散度的计算公式为 D K L ( p ∣ ∣ q ) ∑ i p ( i ) l o g ( p ( i ) q ( i ) ) D_{KL}(p||q)\sum_{i}p(i)\mathrm{log}\left(\frac{p(i)}{q(i)}\right) DKL(p∣∣q)∑ip(i)log(q(i)p(i)) 我们仍然使用上面的例子标签的one-hot编码为[0, 0, 0, 1]预测值为[0.1, 0.1, 0.1, 0.7]KL散度计算结果为 KL 0 * log(0/0.1) 0 * log(0/0.1) 0 * log(0/0.1) 1 * log(1/0.7) -log(0.7) ≈ 0.357 交叉熵 终于要介绍交叉熵了你一定会猜到讲上面的知识会和交叉熵有关对你猜的没错
交叉熵损失函数的计算公式为 H ( p ∣ ∣ q ) H ( p ) D K L ( p ∣ ∣ q ) H(p||q)H(p)D_{KL}(p||q) H(p∣∣q)H(p)DKL(p∣∣q) 其实就是熵和KL散度的加和稍加变形就得到 H ( p ∣ ∣ q ) ≜ − ∑ i p ( i ) log 2 q ( i ) H(p||q)\triangleq-\sum_ip(i)\log_2q(i) H(p∣∣q)≜−∑ip(i)log2q(i) 交叉熵函数的实现 import tensorflow as tf# 假设 y_true 是真实的标签y_pred 是模型的预测值
y_true [[0, 0, 0, 1], [0, 1, 0, 0]]
y_pred [[0.1, 0.1, 0.1, 0.7], [0.1, 0.6, 0.1, 0.2]]loss tf.keras.losses.categorical_crossentropy(y_true, y_pred)写在最后 点赞你的认可是我创作的动力 ⭐收藏你的青睐是我努力的方向 ✏️评论你的意见是我进步的财富