赞
踩
1、示例
2、算法模型
通过最小化损失函数(loss function
)来进行优化求解,整个过程可用下式表示
θ
∗
=
a
r
g
m
i
n
[
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
;
θ
)
)
+
λ
Φ
(
θ
)
]
\theta^*=argmin[\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i;\theta))+\lambda\Phi(\theta)]
θ∗=argmin[N1i=1∑NL(yi,f(xi;θ))+λΦ(θ)]
其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的Φ是正则化项(regularizer)或者叫惩罚项(penalty term),可以是L₁也可以是L₂,或者其他正则函数。上述公式表示的是找到使目标函数最小的θ值。损失函数旨在表示模型输出f(x)和真实值Y的差异程度,不同的损失函数有不同的表示意义,也就是在最小化损失函数的过程中,f(x)逼近Y的方式不同,得到的结果可能也不同。
机器学习算法迭代过程:
平方损失函数
L
(
y
,
f
(
x
;
θ
)
)
=
1
N
∑
i
=
1
N
(
y
i
−
f
(
x
i
,
θ
)
)
2
L(y,f(x;\theta))=\frac{1}{N}\sum_{i=1}^{N}(y_i-f(x_i,\theta))^2
L(y,f(x;θ))=N1i=1∑N(yi−f(xi,θ))2
N是样本数量,它衡量的是模型预测的结果与标签之间的平方差,常用于回归类问题
交叉熵(cross entropy)损失
交叉熵衡量的是数据标签的真实分布与分类模型预测的概率分布之间的差异程度,损失值越小,它们之间的差异就越小,模型就能越准确地进行预测,其离散形式如下:
L
(
y
,
f
(
x
)
)
=
H
(
p
,
q
)
=
−
1
N
∑
i
=
1
N
p
(
y
i
∣
x
i
)
l
o
g
[
q
(
y
i
′
∣
x
i
)
]
L(y,f(x))=H(p,q)=-\frac{1}{N}\sum_{i=1}^{N}p(y_i|x_i)log[q(y'_i|x_i)]
L(y,f(x))=H(p,q)=−N1i=1∑Np(yi∣xi)log[q(yi′∣xi)]
其中p,q分别表示数据标签的真实分布和模型预测给出的分布,p(yi|xi)表示样本xi标签的真实分布。
q(y’i|xi)表示给定样本模型预测在各个类别上的概率分布。
若样本xi只属于某个类别ck,那么上式可以化简为以下形式
L
(
y
,
f
(
x
)
)
=
−
1
N
∑
i
=
1
N
l
o
g
[
q
(
y
i
′
=
c
k
∣
x
i
)
]
L(y,f(x))=-\frac{1}{N}\sum_{i=1}^{N}log[q(y'_i=c_k|x_i)]
L(y,f(x))=−N1i=1∑Nlog[q(yi′=ck∣xi)]
人工神经网络,简称神经网络。在机器学习领域,神经网络是指由很多人工神经元构成的网络结构模型,这些人工神经元之间的连接强度是可学习的参数。
神经元是神经网络进行信息处理的基本单元,其主要是模拟生物神经元的结构和特性,接收输入信号并产生输出。
一个基本的神经元包括3个基本组成部分:
输入信号:x0,x1,x2…xm
线性组合:zi是输入信号的线性组合,wij是神经元的权重
z
i
=
∑
j
=
1
m
w
i
j
x
j
z_i=\sum_{j=1}^{m}w_{ij}x_j
zi=j=1∑mwijxj
非线性激活函数:σ(·)是激活函数,b是偏置,ai是神经元输出信号
a
i
=
σ
(
z
i
+
b
)
a_i=σ(z_i+b)
ai=σ(zi+b)
单隐层感知器
f
(
x
)
=
f
2
(
b
(
2
)
+
W
(
2
)
(
f
1
(
b
(
1
)
+
W
(
1
)
x
)
)
)
f(x)=f_2(b^{(2)}+W^{(2)}(f_1(b^{(1)}+W^{(1)}x)))
f(x)=f2(b(2)+W(2)(f1(b(1)+W(1)x)))
多层感知器(Multi-Layer Perceptron
, MLP
),也称前馈神经网络。
其输入和输出层仍然只有一个,不同的是隐藏层有多个。输入信号通过不断地进行线性变换(线性加权)和非线性变化(激活函数),逐渐将输入信号向后一层传递,直到输出层。
多层感知器的信息传播过程:
z
(
l
)
=
W
(
l
)
⋅
a
(
l
−
1
)
+
b
(
l
)
z^{(l)}=W^{(l)}·a^{(l-1)}+b^{(l)}
z(l)=W(l)⋅a(l−1)+b(l)
a ( l ) = σ l ( z ( l ) ) a^{(l)}=σ_l(z^{(l)}) a(l)=σl(z(l))
激活函数使得神经网络几乎可以任意逼近任何非线性函数。激活函数的一个基本要求是它们是连续可导的,可以允许在少数点上不可导。
Sigmoid函数,值域(0,1)
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x)=\frac{1}{1+e^{-x}}
σ(x)=1+e−x1
Tanh函数,值域(-1,1)
t
a
n
h
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}
tanh(x)=ex+e−xex−e−x
ReLU:线性整流函数(Rectified Linear Unit, ReLU),单侧抑制
R
e
L
U
(
x
)
=
{
x
,
x
≥
0
0
,
x
<
0
ReLU(x)=
LeakyReLU:在输入为负时,可以允许一定量的信息通过,其中λ>0是一个超参数,避免神经元死亡现象
L
e
a
k
y
R
e
L
U
(
x
)
=
{
x
,
x
>
0
λ
x
,
x
≤
0
LeakyReLU(x)=
PReLU,将超参数λ改为了可训练的参数
P
R
e
L
U
(
x
)
=
{
x
,
x
>
0
α
x
,
x
≤
0
PReLU(x)=
ELU:在输入为负时进行线性压缩,加快神经网络的收敛
E
L
U
(
x
)
=
{
x
,
x
≥
0
α
(
e
x
−
1
)
,
x
<
0
ELU(x)=
神经网络的运行过程分为以下三步:
参考资料:《深入浅出图神经网络》GNN原理解析
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。