动手学深度学习pytorch版练习解答—3.1线性回归

第一问和第三问最后一小题都是开放性题目,有很多角度去思考和回答。希望我的这份参考能为您的学习带来帮助,您的指正对我而言也是大有裨益。

  1. 假设我们有⼀些数据x1, . . . , xn ∈ R。我们的⽬标是找到⼀个常数b,使得最小化 ∑ i ( x i − b ) 2 \sum_{i}(x_i-b)^2 i(xib)2
    (1)找到最优值b的解析解。
    (2)这个问题及其解与正态分布有什么关系?
    动手学深度学习pytorch版练习解答—3.1线性回归_第1张图片2. 推导出使⽤平⽅误差的线性回归优化问题的解析解。为了简化问题,可以忽略偏置b(我们可以通过向X添加所有值为1的⼀列来做到这⼀点)。
    (1)⽤矩阵和向量表⽰法写出优化问题(将所有数据视为单个矩阵,将所有⽬标值视为单个向量)
    (2)计算损失对w的梯度。
    (3)通过将梯度设为0、求解矩阵⽅程来找到解析解。
    (4)什么时候可能⽐使⽤随机梯度下降更好?这种⽅法何时会失效?
    动手学深度学习pytorch版练习解答—3.1线性回归_第2张图片3. 假定控制附加噪声ϵ的噪声模型是指数分布。也就是说, p ( ϵ ) = 1 2 e x p ( − ∣ ϵ ∣ ) p(\epsilon)=\frac{1}{2}exp(-|\epsilon|) p(ϵ)=21exp(ϵ)

\qquad (1)写出模型 − l o g P ( y ∣ X ) −log P(y|X) logP(yX)下数据的负对数似然

\qquad 解:设 w = ( b , w 1 , … , w n ) , x i = ( 1 , x i 1 , … , x i n ) w=(b,w_1,\dots,w_n),x_i=(1,x_{i1},\dots,x_{in}) w=(b,w1,,wn),xi=(1,xi1,,xin)

P ( y i ∣ x i ) = 1 2 e − ∣ y i − w x i ∣ ⇒ − l o g ∏ i = 1 n P ( y i ∣ x i ) = − ∑ i = 1 n l o g 1 2 e − ∣ y i − w x i ∣ P(y_i|x_i)=\frac{1}{2}e^{-|y_i-wx_i|} \Rightarrow -log\prod_{i=1}^{n}P(y_i|x_i) = -\sum_{i=1}^{n}log\frac{1}{2}e^{-|y_i-wx_i|} P(yixi)=21eyiwxilogi=1nP(yixi)=i=1nlog21eyiwxi

    = − ∑ i = 1 n ( − ∣ y i − w x i ∣ + l o g 1 2 ) = n l o g 2 + ∑ i = 1 n ∣ y i − w x i ∣ \qquad \quad \ \, = -\sum_{i=1}^{n}(-|y_i-wx_i|+log\frac{1}{2})=nlog2+\sum_{i=1}^{n}|y_i-wx_i|  =i=1n(yiwxi+log21)=nlog2+i=1nyiwxi

\qquad (2)你能写出解析解吗?

\qquad 解:优化目标是最小化 − l o g P ( y ∣ X ) -logP(\textbf{y}|\textbf{X}) logP(yX),也就是上面的结果,关于w的只有后面带绝对值那个,所以需要绝对值那里一堆为0就是解析解了,即: − ∑ i = 1 n ∣ y i − w x i ∣ = − ∑ i = 1 n ( y i − w x i ) = 0 -\sum_{i=1}^{n}|y_i-wx_i|=-\sum_{i=1}^{n}(y_i-wx_i)=0 i=1nyiwxi=i=1n(yiwxi)=0

如果y是关于x的一元函数,那么上面 w = y 1 + y 2 + ⋯ + y n x 1 + x 2 + ⋯ + x n w=\frac{y_1+y_2+\dots+y_n}{x_1+x_2+\dots+x_n} w=x1+x2++xny1+y2++yn。若为多元函数,需要写成 − ∑ i = 1 n ( y i − w T x i ) = 0 -\sum_{i=1}^{n}(y_i-w^Tx_i)=0 i=1n(yiwTxi)=0,则要求解 Y − w T X = 0 Y-w^TX=0 YwTX=0,从而我们得到 w = ( Y X − 1 ) T w=(YX^{-1})^T w=(YX1)T

\qquad (3)提出⼀种随机梯度下降算法来解决这个问题。哪⾥可能出错?(提⽰:当我们不断更新参数时,在驻点附近会发⽣什么情况)你能解决这个问题吗?

\qquad 解:这个函数在零点不可导。而且在零点附近,这个是L1-loss,求导后结果为 w w w,可能会对应loss很小但梯度太大,这样就容易发生振荡,不好收敛。可以考虑把优化目标换为smoothL1-loss(参考自书中论坛“Yang_Liu”用户于10月21日的回答)

你可能感兴趣的:(深度学习,pytorch,线性回归)