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

相关推荐
靴子学长2 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
海棠AI实验室3 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
落魄君子4 小时前
ELM分类-单隐藏层前馈神经网络(Single Hidden Layer Feedforward Neural Network, SLFN)
神经网络·分类·数据挖掘
苏言の狗5 小时前
Pytorch中关于Tensor的操作
人工智能·pytorch·python·深度学习·机器学习
是Dream呀6 小时前
Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
网络·python·神经网络
paixiaoxin8 小时前
CV-OCR经典论文解读|An Empirical Study of Scaling Law for OCR/OCR 缩放定律的实证研究
人工智能·深度学习·机器学习·生成对抗网络·计算机视觉·ocr·.net
weixin_515202498 小时前
第R3周:RNN-心脏病预测
人工智能·rnn·深度学习
吕小明么10 小时前
OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
人工智能·深度学习·算法·aigc·agi
CSBLOG11 小时前
深度学习试题及答案解析(一)
人工智能·深度学习
小陈phd11 小时前
深度学习之超分辨率算法——SRCNN
python·深度学习·tensorflow·卷积