神经网络与深度学习理论与实战-TensorFlow2.0第三章线性模型

数据集:

CIFAR-10(60000张32*32色彩 10类,每类6000张图像)

ImageNet (14197122images, 21841synsets)

应用:

  • 图像分类
  • 文本分类
  • 垃圾邮件过滤
  • 文档分类

主要的线性模型:

  • 线性模型
  • Logistic回归
  • Softmax回归
  • 感知器
  • 支持向量机

线性模型

Logistic回归(Logistic Regression)

机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型。

Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。

Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。

logistic 分布

Logistic 分布是一种连续型的概率分布,其密度函数、分布函数 分别为:

其中, u 表示位置参数 , γ \gamma γ>0 为形状参数 。我们可以看下其图像特征:

Logistic 分布是由其位置和尺度参数定义的连续分布。Logistic 分布的形状与正态分布的形状相似,但是 Logistic 分布的尾部更长,所以我们可以使用 Logistic 分布来建模比正态分布具有更长尾部和更高波峰的数据分布。在深度学习中常用到的 Sigmoid 函数就是 Logistic 的分布函数在 u=0, γ \gamma γ=1 的特殊形式。

C o s t = R S S = 1 N ∑ i = 0 N ( Y ˆ − Y ) 2 Cost=RSS=\frac{1}{N}\sum^{N}_{i=0}{(\^Y-Y)^2} Cost=RSS=N1∑i=0N(Yˆ−Y)2
m i n ( C o s t ) min(Cost) min(Cost)
f ( x ; w ) = w 1 x 1 + w 2 x 2 + ... + w D x D + b = w T x + b f(x;w)=w_1x_1+w_2x_2+...+w_Dx_D+b=w^Tx+b f(x;w)=w1x1+w2x2+...+wDxD+b=wTx+b
g ( f ( x ; w ) ) = s g n ( f ( x ; w ) ) g(f(x;w))=sgn(f(x;w)) g(f(x;w))=sgn(f(x;w))决策函数获取二分类结果
≜ = { 1 , f ( x ; w ) > 0 − 1 , f ( x ; w ) < 0 \triangleq =\begin{cases}1,\quad f(x;w)>0\\-1, \quad f(x;w)<0\end{cases} ≜={1,f(x;w)>0−1,f(x;w)<0
y ( n ) f ( x ( n ) ; w ∗ ) > 0 , ∀ n ∈ [ 1 , N ] y^{(n)}f(x^{(n)};w^*)>0, \forall n \in[1,N] y(n)f(x(n);w∗)>0,∀n∈[1,N]

定义:两类线性可分:对于训练集 D = { ( x ( n ) , y ( n ) ) } n − 1 N D=\{(x^{(n)},y^{(n)})\}^N_{n-1} D={(x(n),y(n))}n−1N,如果存在权重向量 w ∗ w^* w∗,对所有样本都满足 y f ( x ; w ∗ ) > 0 yf(x;w^*)>0 yf(x;w∗)>0,那么训练集D是线性可分的。

点到线的距离
d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 d = \frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}} d=A2+B2 ∣Ax0+By0+C∣
L = ∣ f ( x ; w ) ∣ ∣ w ∣ ∣ 2 ∣ L = |\frac{f(x;w)}{\lvert\lvert w \rvert\rvert_2}| L=∣∣∣w∣∣2f(x;w)∣

多分类问题

多分类问题:分类的类别数C大于2,多分类一般需要多个线性判别函数。

  1. 一对其余:把多分类问题转化为C个一对其余的二分类问题,需要C个判别函数,第i个判别函数用来区分属于类别i,和不属于类别i的样本。
  2. 一对一:把多分类问题转化为C(C-1)/2个"一对一"的二分类,第(i,j)个判别函数用来区分第i类与第j类。
  3. argmax方式:这是一种改进的一对其余方式,需要C个判别函数 f c ( x ; w ) = w c T x + b c , c ∈ [ 1 , ... C ] f_c(x;w)={w_c}^Tx+b_c, c \in[1,...C] fc(x;w)=wcTx+bc,c∈[1,...C]

y = a r g max ⁡ c = 1 C f c ( x ; w c ) y=arg\max^{C}_{c=1}f_c(x;w_c) y=argmaxc=1Cfc(x;wc)判断属于哪个类别的概率最大。

如果有一个超大(小)的肿瘤,阈值就难以确定,假如还是取平均大小为阈值,则会出现下图情况。

解决办法:

  1. 重新找到一个办法解决回归函数严重离群值影响的办法
  2. 重新选定一个阈值

从概率角度解决分类问题

将分类问题看作条件概率估计:为解决连续线性函数不适合分类问题,引入非线性函数g来预测类别标签的后验概率 p ( y = c ∣ x ) p(y=c|x) p(y=c∣x).

在二分类中 p ( y = 1 ∣ x ) = g ( f ( x ; w ) ) p(y=1|x) = g(f(x;w)) p(y=1∣x)=g(f(x;w))

f:线性函数

g:把线性函数的置于从实数区间挤压到(0,1)之间,可以用来表示概率。

S型函数:

  • Logistic函数(sigmoid函数) σ ( x ) = 1 1 + e x p ( − x ) \sigma(x)=\frac{1}{1+exp(-x)} σ(x)=1+exp(−x)1
  • Softmax函数 s o f t m a x ( x k ) = e x p ( x k ) ∑ i = 1 K e x p ( x i ) softmax(x_k)=\frac{exp(x_k)}{\sum^K_{i=1}{exp(x_i)}} softmax(xk)=∑i=1Kexp(xi)exp(xk)
学习准则:

对于样本(x, y ∗ y^* y∗)真实条件概率 p r ( y = 1 ∣ x ) = y ∗ p r ( y = 0 ∣ x ) = 1 − y ∗ p_r(y=1|x) = y^*~~~~~~~~~~~~ p_r(y=0|x)=1-y^* pr(y=1∣x)=y∗ pr(y=0∣x)=1−y∗

模型预测条件概率 p θ ( y = 1 ∣ x ) = σ ( w T x ) p_\theta(y=1|x)=\sigma(w^Tx) pθ(y=1∣x)=σ(wTx)

如何衡量两个条件分布的差异?
交叉熵

熵:在信息论中,熵用来衡量一个随机事件的不确定性。 (概率大,则信息量少)
H ( X ) = E X [ I ( x ) ] = E X [ − l o g ( p ( x ) ) ] = − ∑ x ∈ X p ( x ) l o g ( x ) H(X)=E_X[I(x)]=E_X[-log(p(x))]=-\sum_{x\in X}{p(x)log(x)} H(X)=EX[I(x)]=EX[−log(p(x))]=−∑x∈Xp(x)log(x)

自信息:** ** I ( x ) = − l o g ( p ( x ) ) I(x) = -log(p(x)) I(x)=−log(p(x))

相对熵:二分类问题时的熵,KL散度( D K L ∑ p ∗ l o g ( p q ) D_{KL}\sum{p*log(\frac{p}{q})} DKL∑p∗log(qp), D K L D_{KL} DKL越接近真实情况)

交叉熵:是按照概率分布q的最优的最优编码对真实分布为p的信息进行编码的长度。

Loss= H ( p , q ) = E q [ − l o g q ( x ) ] = − ∑ x p ( x ) l o g q ( x ) H(p,q)=E_q[-logq(x)]=-\sum_{x}{p(x)logq(x)} H(p,q)=Eq[−logq(x)]=−∑xp(x)logq(x)

梯度下降:

  • 交叉熵损失函数,在模型训练集的风险函数为 R ( w ) = − 1 N ∑ i = 1 N y ( i ) l o g ( σ ( w T x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − σ ( w T x ( i ) ) ) R(w)=-\frac{1}{N}\sum^{N}_{i=1}{y^{(i)}log(\sigma(w^Tx^{(i)}))+(1-y^{(i)})log(1-\sigma(w^Tx^{(i)}))} R(w)=−N1∑i=1Ny(i)log(σ(wTx(i)))+(1−y(i))log(1−σ(wTx(i)))
  • 梯度 g r a d = σ R ( w ) σ w = 1 N ∑ i = 1 N ( x ( i ) ∗ ( σ ( w T x ( i ) ) − y ( i ) ) ) grad = \frac{\sigma R(w)}{\sigma w}=\frac{1}{N}\sum^{N}_{i=1}{(x^{(i)}*(\sigma(w^Tx^{(i)})-y^{(i)}))} grad=σwσR(w)=N1∑i=1N(x(i)∗(σ(wTx(i))−y(i)))

KL散度可以被用于计算代价,而KL散度=交叉熵-熵 ,在特定情况下最小化KL散度等价于最小化交叉熵

Softmax回归(Softmax Regression)

softmax回归是logistic回归的多类推广。
y ˆ = a r g c = 1 C m a x w c T x \^y=arg^C_{c=1}maxw^T_cx yˆ=argc=1CmaxwcTx

其中 w c w_c wc是C类的权重向量, y ˆ ∈ R C \^y \in R^C yˆ∈RC为所有类别的预测条件概率组成的向量。

二分类时, y ∈ { 0 , 1 } y\in\{0,1\} y∈{0,1}

使用softmax函数,定义目标函数y=c的条件概率为:
P ( y = c ∣ x ) = s o f t m a x ( w c T x ) = e x p ( w c T x ) ∑ i = 1 C e x p ( w i T x ) P(y=c|x)=softmax(w^T_cx)=\frac{exp(w^T_cx)}{\sum^C_{i=1}{exp(w^T_ix)}} P(y=c∣x)=softmax(wcTx)=∑i=1Cexp(wiTx)exp(wcTx)

(另一种理解:求每个的概率值,再求概率最大的值)

感知器(Perceptron)

y ˆ = { + 1 , w T X > 0 − 1 , w T x < = 0 \^y=\begin{cases}+1,\quad w^TX>0\\-1, \quad w^Tx<=0\end{cases} yˆ={+1,wTX>0−1,wTx<=0
y ˆ = s g n ( w T x ) \^y = sgn(w^Tx) yˆ=sgn(wTx)

给定N个样本的训练集: ( x ( n ) , y ( n ) ) n = 1 N {(x^{(n)}, y^{(n)})}^N_{n=1} (x(n),y(n))n=1N,其中 y ( n ) ∈ { + 1 , − 1 } y^{(n)} \in \{ +1,-1\} y(n)∈{+1,−1},感知器学习算法试图找到一组参数 w ∗ w^* w∗,使得对于每个样本 ( x ( n ) , x ( n ) ) (x^{(n)}, x^{(n)}) (x(n),x(n))有
y ( n ) w ∗ x ( n ) > 0 , ∀ n ∈ { 1 , . . . , N } y^{(n)}w^*x^{(n)} > 0, \forall n \in \{1,...,N\} y(n)w∗x(n)>0,∀n∈{1,...,N}

感知器学习算法也是经典的线性分类器的参数学习算法。
学习算法

  • 一种错误驱动的在线学习算法
  • 先初始化一个权重向量 w ← 0 w \leftarrow 0 w←0(通常是全零向量)
  • 每次分错一个样本 ( x , y ) (x,y) (x,y)时,即

y w T x < 0 yw^Tx<0 ywTx<0

  • 用这个样本来更新权重

w ← w + y x w \leftarrow w+yx w←w+yx

感知器学习过程

输入:训练集:(x,),i=1....,N,迭代次数:T

  1. 初始化 w 0 = 0 w_0 = 0 w0=0;
  2. k = 0;
  3. for t= 1...·T do
    1. for i = 1...N do
      1. 选取一个样本(xi,yi), i f w T ( x i , y i ) < 0 t h e n if \quad w^T(x_i,y_i)<0 then ifwT(xi,yi)<0then;
        1. W k + 1 = W k + y i x i W_{k+1}=W_k+y_ix_i Wk+1=Wk+yixi
        2. k = k+1
      2. end
    2. end
  4. end

输出:wk

对比Logistic回归的更新方式

不足

虽然感知器在线性可分的数据上可以保证收敛,但其存在以下不足!

  • 在数据集线性可分时,感知器虽然可以找到一个超平面把两类数据分开但并不能保证其泛化能力.
  • 感知器对样本顺序比较敏感.每次迭代的顺序不一致时,找到的分割超平面也往往不一致.
  • 如果训练集不是线性可分的,就永远不会收敛.

支持向量机(SVM)

实战: 逻辑回归(二分类)和softmax回归(多分类)

但是我觉得 softmax的效果做出来不太好,不知道是我数据设的不好还是怎么样,虽然损失已经收敛了,但是看着好像不太对。
logistic regression and softmax regression.ipynb

相关推荐
HPC_fac130520678161 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
秀儿还能再秀7 小时前
神经网络(系统性学习三):多层感知机(MLP)
神经网络·学习笔记·mlp·多层感知机
老艾的AI世界9 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
sp_fyf_202412 小时前
【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理
CoderIsArt12 小时前
基于 BP 神经网络整定的 PID 控制
人工智能·深度学习·神经网络
z千鑫13 小时前
【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南
人工智能·pytorch·深度学习·aigc·tensorflow·keras·codemoss
EterNity_TiMe_13 小时前
【论文复现】神经网络的公式推导与代码实现
人工智能·python·深度学习·神经网络·数据分析·特征分析
思通数科多模态大模型14 小时前
10大核心应用场景,解锁AI检测系统的智能安全之道
人工智能·深度学习·安全·目标检测·计算机视觉·自然语言处理·数据挖掘
数据岛14 小时前
数据集论文:面向深度学习的土地利用场景分类与变化检测
人工智能·深度学习
学不会lostfound14 小时前
三、计算机视觉_05MTCNN人脸检测
pytorch·深度学习·计算机视觉·mtcnn·p-net·r-net·o-net