神经网络与深度学习理论与实战-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

相关推荐
王哈哈^_^29 分钟前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
是瑶瑶子啦44 分钟前
【深度学习】论文笔记:空间变换网络(Spatial Transformer Networks)
论文阅读·人工智能·深度学习·视觉检测·空间变换
wangyue42 小时前
c# 深度模型入门
深度学习
川石课堂软件测试2 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
985小水博一枚呀2 小时前
【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法
人工智能·深度学习·神经网络·cnn·transformer
985小水博一枚呀3 小时前
【深度学习滑坡制图|论文解读2】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法
人工智能·深度学习·神经网络·cnn·transformer·迁移学习
数据与后端架构提升之路3 小时前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
深度学习实战训练营4 小时前
基于CNN-RNN的影像报告生成
人工智能·深度学习
孙同学要努力11 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
sniper_fandc13 小时前
深度学习基础—循环神经网络的梯度消失与解决
人工智能·rnn·深度学习