| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 3.线性神经网络----动手学深度学习 -> 正文阅读 |
|
[人工智能]3.线性神经网络----动手学深度学习 |
线性回归的从0开始实现随机梯度下降小批量随机梯度下降 高斯分布
torch.Tensor.detach()detach():从计算图中脱离出来 分类问题中使用的softmax函数
y
k
=
exp
?
(
a
k
)
∑
i
=
1
n
exp
?
(
a
i
)
y_{k}=\frac{\exp \left(a_{k}\right)}{\sum_{i=1}^{n} \exp \left(a_{i}\right)}
yk?=∑i=1n?exp(ai?)exp(ak?)?
softmax函数的改进
y
k
=
exp
?
(
a
k
)
∑
i
=
1
n
exp
?
(
a
i
)
=
C
exp
?
(
a
k
)
C
∑
i
=
1
n
exp
?
(
a
i
)
=
exp
?
(
a
k
+
log
?
C
)
∑
i
=
1
n
exp
?
(
a
i
+
log
?
C
)
=
exp
?
(
a
k
+
C
′
)
∑
i
=
1
n
exp
?
(
a
i
+
C
′
)
\begin{aligned} y_{k}=\frac{\exp \left(a_{k}\right)}{\sum_{i=1}^{n} \exp \left(a_{i}\right)} &=\frac{\mathrm{C} \exp \left(a_{k}\right)}{\mathrm{C} \sum_{i=1}^{n} \exp \left(a_{i}\right)} \\ &=\frac{\exp \left(a_{k}+\log \mathrm{C}\right)}{\sum_{i=1}^{n} \exp \left(a_{i}+\log \mathrm{C}\right)} \\ &=\frac{\exp \left(a_{k}+\mathrm{C}^{\prime}\right)}{\sum_{i=1}^{n} \exp \left(a_{i}+\mathrm{C}^{\prime}\right)} \end{aligned}
yk?=∑i=1n?exp(ai?)exp(ak?)??=C∑i=1n?exp(ai?)Cexp(ak?)?=∑i=1n?exp(ai?+logC)exp(ak?+logC)?=∑i=1n?exp(ai?+C′)exp(ak?+C′)?? 改进后的softmax函数如下:
可以得知softmax函数的输出是0~1之间的实数,而且softmax函数的输出值的总和是1. 正是因为有了这个性质,我们才可以把softmax函数的输出解释为‘概率’ 交叉熵损失函数原理详解
交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性,要理解交叉熵,需要先了解下面几个概念。
信息奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”,也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。 “太阳从东边升起”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起的,这是一句废话,信息量为0。 ”2018年中国队成功进入世界杯“,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,而这句话消除了进入世界杯的不确定性,所以按照定义,这句话的信息量很大。 根据上述可总结如下:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。 设某一事件发生的概率为P(x),其信息量表示为:
信息熵也被称为熵,用来表示所有信息量的期望。 使用明天的天气概率来计算其信息熵: 对于0-1分布的问题,由于其结果只用两种情况,是或不是,设某一件事情发生的概率为 P ( x ) \mathrm{P}(\mathrm{x}) P(x),则另一件事情发生的概率为 1 ? P ( x ) 1 - \mathrm{P}(\mathrm{x}) 1?P(x),所以对于0-1分布的问题,计算熵的公式可以简化如下: H ( X ) = ? ∑ n = 1 n P ( x i log ? ( P ( x i ) ) ) = ? [ P ( x ) log ? ( P ( x ) ) + ( 1 ? P ( x ) ) log ? ( 1 ? P ( x ) ) ] = ? P ( x ) log ? ( P ( x ) ) ? ( 1 ? P ( x ) ) log ? ( 1 ? P ( x ) ) \begin{array}{c} \mathrm{H}(\mathbf{X})=-\sum_{\mathrm{n}=1}^{\mathrm{n}} \mathrm{P}\left(\mathrm{x}_{\mathrm{i}} \log \left(\mathrm{P}\left(\mathrm{x}_{\mathrm{i}}\right)\right)\right) \\ =-[\mathrm{P}(\mathrm{x}) \log (\mathrm{P}(\mathrm{x}))+(1-\mathrm{P}(\mathrm{x})) \log (1-\mathrm{P}(\mathrm{x}))] \\ =-\mathrm{P}(\mathrm{x}) \log (\mathrm{P}(\mathrm{x}))-(1-\mathrm{P}(\mathrm{x})) \log (1-\mathrm{P}(\mathrm{x})) \end{array} H(X)=?∑n=1n?P(xi?log(P(xi?)))=?[P(x)log(P(x))+(1?P(x))log(1?P(x))]=?P(x)log(P(x))?(1?P(x))log(1?P(x))?
如果对于同一个随机变量X XX有两个单独的概率分布
P
(
x
)
\mathrm{P}(\mathrm{x})
P(x)和
Q
(
x
)
\mathrm{Q}(\mathrm{x})
Q(x),则我们可以使用KL散度来衡量这两个概率分布之间的差异。 使用 \mathrm{…}可以将括号内的字母由数学斜体变为正体,即罗马体 在机器学习中,常常使用
P
(
x
)
\mathrm{P}(\mathrm{x})
P(x)来表示样本的真实分布,
Q
(
x
)
\mathrm{Q}(\mathrm{x})
Q(x) 来表示模型所预测的分布,比如在一个三分类任务中(例如,有猫,狗,马三类),
x
1
,
x
2
,
x
3
\mathrm{x1, x2,x3}
x1,x2,x3分别代表猫,狗,马,例如一张猫的图片真实分布为
P
(
x
)
=
[
1
,
0
,
0
]
\mathrm{P}(\mathrm{x})=[1, 0, 0]
P(x)=[1,0,0], 而预测分布
Q
(
x
)
\mathrm{Q}(\mathrm{x})
Q(x) = [0.7, 0.2, 0.1], 计算KL散度: KL散度越小,表示 P ( x ) \mathrm{P(x)} P(x)与 Q ( x ) \mathrm{Q(x)} Q(x)的分布更加接近,可以通过反复训练 Q ( x ) \mathrm{Q(x)} Q(x),来使得 Q ( x ) \mathrm{Q(x)} Q(x)的分布逼近 P ( x ) \mathrm{P(x)} P(x)。
首先将KL散度公式拆开: 前者
H
(
p
(
x
)
)
\mathrm{H(p(x))}
H(p(x))表示信息熵,后者即为交叉熵,即 KL散度= 交叉熵 - 信息熵
在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,而在分类问题中常常使用交叉熵作为loss函数。 假设我们输入一张狗的图片,标签与预测值如下: 一个batch的loss为
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:50:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |