精华内容
下载资源
问答
  • 本文总结机器学习基石的第三次作业,主要包括误差函数、特征转换、二阶泰勒展开,以及线性回归,逻辑回归的实现。

    本文总结机器学习基石的第三次作业,主要包括误差函数、特征转换、二阶泰勒展开,以及线性回归,逻辑回归的实现。


    问题1和问题2:关于线性回归问题中 E i n E_{in} Ein E o u t E_{out} Eout的理解。

    关于含有噪声的目标 y = w f T x + ϵ y=w^T_fx+\epsilon y=wfTx+ϵ,其中的噪声 ϵ \epsilon ϵ均值为0,方差为 σ 2 \sigma^2 σ2,且相互独立。根据PPT上的讲解可知,闭式解 w l i n w_{lin} wlin E i n E_{in} Ein为:
    E i n ( w l i n ) = 1 N ∣ ∣ y − y ^ ∣ ∣ 2 = 1 N ∣ ∣ ( I − X X † ) y ∣ ∣ 2 = 1 N ∣ ∣ ( I − H ) y ∣ ∣ 2 E_{in}(w_{lin})=\frac{1}{N}||\mathbb{y}-\hat{\mathbb{y}}||^2=\frac{1}{N}||(I-XX^{\dagger})\mathbb{y}||^2=\frac{1}{N}||(I-H)\mathbb{y}||^2 Ein(wlin)=N1yy^2=N1(IXX)y2=N1(IH)y2
    在这里插入图片描述

    从上图可知, ( I − H ) y = ( I − H ) n o i s e (I-H)\mathbb{y}=(I-H)noise (IH)y=(IH)noise(这是基于只有 f ( x ) f(x) f(x)含有噪声, x x x不含噪声的前提),从而问题转换为 E i n ( w l i n ) = 1 N ∣ ∣ ( I − H ) n o i s e ∣ ∣ 2 E_{in}(w_{lin})=\frac{1}{N}||(I-H)noise||^2 Ein(wlin)=N1(IH)noise2。为了简化起见,令 A = ( I − H ) , B = n o i s e → ∣ ∣ A B ∣ ∣ 2 = s c a l e r A=(I-H),B=noise\to ||AB||^2=scaler A=(IH)B=noiseAB2=scaler,从而可以获得下面的式子(其中用到 B B T = s c a l e r BB^T=scaler BBT=scaler):
    ∣ ∣ A B ∣ ∣ 2 = t r a c e ( ( A B ) T A B ) = t r a c e ( B B T A T A ) = B B T t r a c e ( A T A ) = ∣ ∣ n o i s e ∣ ∣ 2 t r a c e ( A T A ) ||AB||^2=trace((AB)^TAB)=trace(BB^TA^TA)\\ =BB^Ttrace(A^TA)=||noise||^2trace(A^TA) AB2=trace((AB)TAB)=trace(BBTATA)=BBTtrace(ATA)=noise2trace(ATA)
    根据 H H H的性质(具体证明等见Q2)可得:
    t r a c e ( ( I − H ) T ( I − H ) ) = t r a c e ( I − H ) = N − ( d + 1 ) trace((I-H)^T(I-H))=trace(I-H)=N-(d+1) trace((IH)T(IH))=trace(IH)=N(d+1)
    所以,综上所述可得:
    E i n ( w l i n ) = ( 1 − d + 1 N ) ∣ ∣ n o i s e ∣ ∣ 2 E_{in}(w_{lin})=(1-\frac{d+1}{N})||noise||^2 Ein(wlin)=(1Nd+1)noise2

    在这里插入图片描述
    在这里插入图片描述


    在这里插入图片描述
    σ = 0.1 ,   d = 8 \sigma=0.1,\ d=8 σ=0.1, d=8时,使得 E i n E_{in} Ein的数学期望 ≥ 0.008 \ge0.008 0.008的样本数是多少?(从选项中选择满足条件情况下最小的)

    E i n E_{in} Ein的数学期望为:
    E D [ E i n ( w l i n ) ] = ( 1 − d + 1 N ) σ 2 \mathbb{E}_D[E_{in}(w_{lin})]=(1-\frac{d+1}{N})\sigma^2 ED[Ein(wlin)]=(1Nd+1)σ2
    从而相当于 ( 1 − 9 / N ) ∗ 0.01 ≥ 0.0008 → N = 45 (1-9/N)*0.01\ge 0.0008\to N=45 (19/N)0.010.0008N=45,从而选择N=100。
    在这里插入图片描述
    针对hat matrix H = X ( X T X ) − 1 X T H=X(X^TX)^{-1}X^T H=X(XTX)1XT性质的探究,以下哪些性质是 H H H所具有的?

    结论: H H H是①对称 ②幂等性 ③半正定 ④有d+1个特征值为1。

    证明:

    • ①对称性: H = ( X ( X T X ) − 1 X T ) T = X ( X T X ) − 1 X T = H H=(X(X^TX)^{-1}X^T)^T=X(X^TX)^{-1}X^T=H H=(X(XTX)1XT)T=X(XTX)1XT=H(其中有用到 ( ( A B ) − 1 ) T = ( ( A B ) T ) − 1 ((AB)^{-1})^T=((AB)^T)^{-1} ((AB)1)T=((AB)T)1,这条式子有可逆作为先决条件);
    • ②幂等性: H 2 = X ( X T X ) − 1 X T X ( X T X ) − 1 X T = X ( X T X ) − 1 X T = H H^2=X(X^TX)^{-1}X^TX(X^TX)^{-1}X^T=X(X^TX)^{-1}X^T=H H2=X(XTX)1XTX(XTX)1XT=X(XTX)1XT=H
    • ③半正定:假设存在特征值和特征向量 H w = λ w Hw=\lambda w Hw=λw,则 λ w = H w = H 2 w = λ H w = λ 2 w \lambda w=Hw=H^2w=\lambda Hw=\lambda^2w λw=Hw=H2w=λHw=λ2w,从而 λ 2 w = λ w → λ = 0   o r   1 \lambda^2w=\lambda w\to \lambda=0\ or \ 1 λ2w=λwλ=0 or 1,所以全部特征值均 ≥ 0 \ge 0 0
    • ④存在d+1个特征值为1: t r a c e ( H ) = t r a c e ( X ( X T X ) − 1 X T ) = t r a c e ( ( X T X ) − 1 X T X ) = t r a c e ( I d + 1 × d + 1 ) = d + 1 trace(H)=trace(X(X^TX)^{-1}X^T)=trace((X^TX)^{-1}X^TX)=trace(I_{d+1\times d+1})=d+1 trace(H)=trace(X(XTX)1XT)=trace((XTX)1XTX)=trace(Id+1×d+1)=d+1,又根据 t r a c e ( H ) = ∑ λ i trace(H)=\sum\lambda_i trace(H)=λi(该项需要半正定和对称性作为条件,具体证明可见AI圣经PRML),从而可知 λ = 1 \lambda=1 λ=1对应有 d + 1 d+1 d+1个。

    这些结论可以用来证明 t r a c e ( I − H ) = N − ( d + 1 ) trace(I-H)=N-(d+1) trace(IH)=N(d+1)


    问题3-5:主要考察损失判据和随机梯度下降。
    在这里插入图片描述
    在这里插入图片描述
    上述损失判据中,哪个是0/1判据 s i g n ( w T x ) ≠ y sign(w^Tx)\ne y sign(wTx)=y的上界( y ∈ { − 1 , + 1 } y\in \{-1,+1\} y{1,+1})?

    通过上述图像易知,err3(本题D项,绘图存疑)即为0/1判据的上界。


    在这里插入图片描述
    上述损失判据中,哪个并不是处处可微分的?

    由上图得,err2(本题D项)即在0处不可微分。


    在这里插入图片描述
    对上述损失判据计算SGD(忽略不可微分的情况),哪个损失判据恰好是PLA中采用的(即其求梯度函数恰好为PLA中更新参数时用到的)?

    由第二节课件可知,PLA的参数更新方程为 w ← w + y x    i f   s i g n ( w T x ) ≠ y w\gets w+yx\ \ if\ sign(w^Tx)\neq y ww+yx  if sign(wTx)=y,可等价为 y w T x > 0 ,   ∇ E = 0 ,      y w T x < 0 ,   ∇ E = − y x yw^Tx\gt 0,\ \nabla E=0,\ \ \ \ yw^Tx\lt 0,\ \nabla E=-yx ywTx>0, E=0,    ywTx<0, E=yx,从而推出 e r r ( w ) = m a x ( 0 , − y w T x ) err(w)=max(0,-yw^Tx) err(w)=max(0,ywTx)


    问题6-10:主要考查二元情况下的导数和二阶泰勒展开。

    一阶导数: ∇ f ( x , y ) = [ ∂ f ∂ x , ∂ f ∂ y ] T \nabla f(x,y)=[\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}]^T f(x,y)=[xf,yf]T
    二阶导数: ∇ 2 f ( x , y ) = [ ∂ 2 f ∂ x 2 , ∂ 2 f ∂ y ∂ x ; ∂ 2 f ∂ y ∂ x , ∂ 2 f ∂ y 2 ] \nabla^2 f(x,y)=[\frac{\partial^2 f}{\partial x^2},\frac{\partial^2 f}{\partial y\partial x}; \frac{\partial^2 f}{\partial y\partial x},\frac{\partial^2 f}{\partial y^2}] 2f(x,y)=[x22f,yx2f;yx2f,y22f]
    二阶泰勒展开:
    f ( x + Δ x , y + Δ y ) = f ( x , y ) + Δ x ∂ f ( x , y ) ∂ x + Δ y ∂ f ( x , y ) ∂ y + 1 2 ! [ ( Δ x ) 2 ∂ 2 f ( x , y ) ∂ x 2 + 2 Δ x Δ y ∂ 2 f ( x , y ) ∂ x ∂ y + ( Δ y ) 2 ∂ 2 f ( x , y ) ∂ y 2 ] f(x+\Delta x, y+\Delta y)=f(x,y)+\Delta x\frac{\partial f(x,y)}{\partial x}+\Delta y\frac{\partial f(x,y)}{\partial y}\\ +\frac{1}{2!}\big[(\Delta x)^2\frac{\partial^2 f(x,y)}{\partial x^2}+2\Delta x\Delta y\frac{\partial^2 f(x,y)}{\partial x\partial y}+(\Delta y)^2\frac{\partial^2 f(x,y)}{\partial y^2}\big] f(x+Δx,y+Δy)=f(x,y)+Δxxf(x,y)+Δyyf(x,y)+2!1[(Δx)2x22f(x,y)+2ΔxΔyxy2f(x,y)+(Δy)2y22f(x,y)]
    题设表达式:
    E ( u , v ) = e u + e 2 v + e u v + u 2 − 2 u v + 2 v 2 − 3 u − 2 v E(u,v)=e^u+e^{2v}+e^{uv}+u^2-2uv+2v^2-3u-2v E(u,v)=eu+e2v+euv+u22uv+2v23u2v
    在这里插入图片描述
    ∇ E ( u , v ) \nabla E(u,v) E(u,v) ( u , v ) = ( 0 , 0 ) (u,v)=(0,0) (u,v)=(0,0)处的值时多少?

    根据一阶导数可得:
    ∂ E ( u , v ) ∂ u = e u + v e u v + 2 u − 2 v − 3 ∂ E ( u , v ) ∂ v = 2 e 2 v + u e u v − 2 u + 4 v − 2 \frac{\partial E(u,v)}{\partial u}=e^u+ve^{uv}+2u-2v-3\\ \frac{\partial E(u,v)}{\partial v}=2e^{2v}+ue^{uv}-2u+4v-2 uE(u,v)=eu+veuv+2u2v3vE(u,v)=2e2v+ueuv2u+4v2
    ( u , v ) = ( 0 , 0 ) (u,v)=(0,0) (u,v)=(0,0)代入可得 ∇ E ( 0 , 0 ) = ( − 2 , 0 ) \nabla E(0,0)=(-2,0) E(0,0)=(2,0)


    在这里插入图片描述
    根据梯度下降算法(如下式所示),对参数进行迭代更新,求 η = 0.01 , ( u 0 , v 0 ) = ( 0 , 0 ) \eta=0.01,(u_0,v_0)=(0,0) η=0.01,(u0,v0)=(0,0)经过五次迭代后的结果 ( u 5 , v 5 ) (u_5,v_5) (u5,v5) E ( u 5 , v 5 ) E(u_5,v_5) E(u5,v5)
    ( u t + 1 , v t + 1 ) = ( u t , v t ) − η ∇ E ( u t , v t ) (u_{t+1},v_{t+1})=(u_t,v_t)-\eta \nabla E(u_t,v_t) (ut+1,vt+1)=(ut,vt)ηE(ut,vt)
    由程序推出: u = 0.0941 , v = 0.0018 , E = 2.825 u= 0.0941,v= 0.0018,E=2.825 u=0.0941,v=0.0018,E=2.825


    在这里插入图片描述
    如果采用二阶泰勒展开 E ^ 2 ( Δ u , Δ v ) \hat{E}_2(\Delta u,\Delta v) E^2(Δu,Δv)来近似 E ( u + Δ u , v + Δ v ) E(u+\Delta u, v+\Delta v) E(u+Δu,v+Δv),求下述表达式中的参数在 ( u , v ) = ( 0 , 0 ) (u,v)=(0,0) (u,v)=(0,0)处的值?
    E ^ 2 ( Δ u , Δ v ) = b u u ( Δ u ) 2 + b v v ( Δ v ) 2 + b u v ( Δ u ) ( Δ v ) + b u Δ u + b v Δ v + b \hat{E}_2(\Delta u,\Delta v)=b_{uu}(\Delta u)^2+b_{vv}(\Delta v)^2+b_{uv}(\Delta u)(\Delta v)+b_u\Delta u+b_v\Delta v+b E^2(Δu,Δv)=buu(Δu)2+bvv(Δv)2+buv(Δu)(Δv)+buΔu+bvΔv+b
    根据二阶导数的情况:
    ∂ 2 E ∂ u 2 = e u + v 2 e u v + 2 ∂ 2 E ∂ v 2 = 4 e 2 v + u 2 e u v + 4 ∂ 2 E ∂ u ∂ v = e u v + v u e u v − 2 \frac{\partial^2 E}{\partial u^2}=e^u+v^2e^{uv}+2\\ \frac{\partial^2 E}{\partial v^2}=4e^{2v}+u^2e^{uv}+4\\ \frac{\partial^2 E}{\partial u\partial v}=e^{uv}+vue^{uv}-2 u22E=eu+v2euv+2v22E=4e2v+u2euv+4uv2E=euv+vueuv2
    将上式代入二阶泰勒展开,推出: ( 1.5 , 4 , − 1 , − 2 , 0 , 3 ) (1.5,4,-1,-2,0,3) (1.5,4,1,2,0,3)


    在这里插入图片描述
    将黑塞/海森矩阵(Hessian Matrix)表示为 ∇ 2 E ( u , v ) \nabla^2E(u,v) 2E(u,v),并假设该矩阵是正定的。以下哪个时最佳的 ( Δ u , Δ v ) (\Delta u,\Delta v) (Δu,Δv)使得 E ^ 2 \hat E_2 E^2取到最小值?(这个方向称之为Newton Direction)

    找使得 E ^ 2 \hat E_2 E^2最小的 ( Δ u , Δ v ) (\Delta u,\Delta v) (Δu,Δv),可以直接通过求导获得。分别对 Δ u \Delta u Δu Δ v \Delta v Δv求导,结果如下:
    ∂ E 2 ∂ Δ u = ∂ E ∂ u + Δ u ∂ 2 E ∂ u 2 + Δ v ∂ 2 E ∂ u ∂ v = 0 ∂ E 2 ∂ Δ v = ∂ E ∂ v + Δ v ∂ 2 E ∂ v 2 + Δ u ∂ 2 E ∂ u ∂ v = 0 \frac{\partial E_2}{\partial \Delta u}=\frac{\partial E}{\partial u}+\Delta u\frac{\partial^2 E}{\partial u^2}+\Delta v\frac{\partial^2 E}{\partial u\partial v}=0\\ \frac{\partial E_2}{\partial \Delta v}=\frac{\partial E}{\partial v}+\Delta v\frac{\partial^2 E}{\partial v^2}+\Delta u\frac{\partial^2 E}{\partial u\partial v}=0 ΔuE2=uE+Δuu22E+Δvuv2E=0ΔvE2=vE+Δvv22E+Δuuv2E=0
    联立上述两式,并将 ( Δ u , Δ v ) (\Delta u,\Delta v) (Δu,Δv)以向量形式提取出来可以化简为:
    ( Δ u , Δ v ) T = − ( ∇ 2 E ) − 1 ∇ E (\Delta u,\Delta v)^T=-(\nabla^2E)^{-1}\nabla E (Δu,Δv)T=(2E)1E


    在这里插入图片描述
    ( u 0 , v 0 ) (u_0,v_0) (u0,v0)利用Newton Direction(无 η \eta η)进行参数更新,五轮更新后 ( u 5 , v 5 ) (u_5,v_5) (u5,v5) E E E 结果为?

    通过简单的程序可得: u = 0.6118 , v = 0.0705 , E = 2.3608 u= 0.6118,v= 0.0705,E=2.3608 u=0.6118,v=0.0705,E=2.3608

    从该结果可以看出,Newton Direction更新速度更快,但是代价是求Hessian矩阵引入的复杂性。


    问题11-12:关于特征转换的问题。
    在这里插入图片描述
    考虑二维空间上的6个点,采用含有二次函数,线性函数的hypotheses集合,最多能shatter其中的几个点。shatter的意思是说将输入样本点完全二分。看下图:
    在这里插入图片描述
    使用上述六条线可以将六个样本点shatter。


    在这里插入图片描述
    假设转换之前预先“偷看”了所有 N N N个数据,并定义一种特殊的特征转换,将 x ∈ R d → z ∈ R N x\in \mathbb{R}^d\to z\in\mathbb{R}^N xRdzRN
    ( Φ ( x ) ) n = z n = [ x = x n ] (\Phi(x))_n=z_n=[x=x_n] (Φ(x))n=zn=[x=xn]
    这题的关键在于理解这种“奇葩”的特征转换,举个例子,如第1个数据 x 1 x_1 x1,根据上述规则则变为 [ 1 , 0 , . . . , 0 ] T [1,0,...,0]^T [1,0,...,0]T,(矩阵大小 N × 1 N\times1 N×1)就是将第几个数对应的行置为1,其他行均为0。显然,不管多少数,其转换后的向量是两两正交的,正交的向量一定是线性无关的,因此均可以被shatter,所以 d v c ( H Φ ) = ∞ d_{vc}(H_\Phi)=\infty dvc(HΦ)=。所以答案为C。


    问题13-15:主要关于线性回归问题和特征转换。

    数据产生:数据集大小 N = 1000 N=1000 N=1000,且 X = [ − 1 , 1 ] × [ − 1 , 1 ] \mathcal{X}=[-1,1]\times[-1,1] X=[1,1]×[1,1],每个数据的 x \mathbb{x} x均等概率的从 X \mathcal{X} X中提取。而对应的 y y y则根据 f ( x 1 , x 2 ) = s i g n ( x 1 2 + x 2 2 − 0.6 ) f(x_1,x_2)=sign(x_1^2+x_2^2-0.6) f(x1,x2)=sign(x12+x220.6)来确定,且对数据集中的 10 % 10\% 10%的数据的 y y y进行反转(相当于添加噪声)。

    先对线性回归算法进行简单的说明:

    函数集: y = w T x y=w^T\mathbb{x} y=wTx

    损失函数: E i n ( w ) = 1 N ∑ n = 1 N ( w T x n − y n ) 2 E_{in}(w)=\frac{1}{N}\sum_{n=1}^N(w^T\mathbb{x}_n-y_n)^2 Ein(w)=N1n=1N(wTxnyn)2

    梯度: ∇ E i n ( w ) = 2 N ( X T X w − X T y ) \nabla E_{in}(w)=\frac{2}{N}(X^TXw-X^T\mathbb{y}) Ein(w)=N2(XTXwXTy)

    “目的”:寻找 w w w使得损失函数最小

    Linear Regression

    ①获得数据 ( x 1 , y 1 ) , . . . , ( x N , y N ) (\mathbb{x}_1,y_1),...,(\mathbb{x}_N,y_N) (x1,y1),...,(xN,yN)
    ②采用闭式解公式求出最佳 w w w w l i n = ( X T X ) − 1 X T y w_{lin}=(X^TX)^{-1}X^T\mathbb{y} wlin=(XTX)1XTy
    ③返回 w l i n w_{lin} wlin

    如果还有预测过程,直接 y ^ = w l i n T x \hat{y}=w_{lin}^Tx y^=wlinTx


    在这里插入图片描述
    不进行特征转换,只采用特征 ( 1 , x 1 , x 2 ) (1, x_1,x_2) (1,x1,x2),利用Linear Regression获得最佳的 w l i n w_{lin} wlin。将其直接运用到分类问题上面(利用 s i g n ( w T x ) sign(w^Tx) sign(wTx)),在利用 0 / 1 0/1 0/1判据来衡量训练样本误差 E i n E_{in} Ein。进行1000次实验,取误差的平均。

    Ein: 0.5036

    通过上面结果可知,直接利用Linear Regression(利用square error)再运用到分类问题上结果很差!


    问题14-15:将数据的特征进行转换,转换为 ( 1 , x 1 , x 2 , x 1 x 2 , x 1 2 , x 2 2 ) (1,x_1,x_2,x_1x_2,x_1^2,x_2^2) (1,x1,x2,x1x2,x12,x22)这6项,再利用Linear Regression获得最佳的 w l i n w_{lin} wlin,求该 w l i n w_{lin} wlin以及将其运用到测试集上的测试误差 E o u t E_{out} Eout(衡量方式与Q13相同)。
    在这里插入图片描述

    theta:[[-1.01626639 0.07325707 0.02834912 -0.0155599 1.63387468 1.52477431]]
    选项中最接近的为:
    g ( x 1 , x 2 ) = s i g n ( − 1 − 0.05 x 1 + 0.08 x 2 + 0.13 x 1 x 2 + 1.5 x 1 2 + 1.5 x 2 2 ) g(x_1,x_2)=sign(-1-0.05x_1+0.08x_2+0.13x_1x_2+1.5x_1^2+1.5x_2^2) g(x1,x2)=sign(10.05x1+0.08x2+0.13x1x2+1.5x12+1.5x22)


    在这里插入图片描述
    在14题得到的最优w的基础上,产生1000个测试样本,计算误差。重复1000次求平均。

    Eout: 0.125225


    问题16-17:关于多类别logistics regression问题。针对K类别分类问题,我们定义输出空间 Y = { 1 , 2 , . . . , K } \mathcal{Y}=\{1,2,...,K\} Y={1,2,...,K},MLR的函数集可以视为由一系列(K个)权值向量 ( w 1 , . . . , w K ) (w_1,...,w_K) (w1,...,wK)构成,其中每个权值向量均为 d + 1 d+1 d+1维。每种假设函数可以表示为:
    h y ( x ) = e x p ( w y T x ) ∑ i = 1 K e x p ( w i T x ) h_y(x)=\frac{exp(w^T_y\mathbb{x})}{\sum_{i=1}^Kexp(w_i^T\mathbb{x})} hy(x)=i=1Kexp(wiTx)exp(wyTx)
    且可以用来近似潜在的目标分布函数 P ( y ∣ x ) P(y|\mathbb{x}) P(yx)。MLR的“目标”就是从假设函数集中寻找使得似然函数最大的额假设函数。
    在这里插入图片描述

    类似Lecture10中最小化 − l o g ( l i k e l i h o o d ) -log(likelihood) log(likelihood)一样,推导 E i n ( w 1 , . . . , w K ) E_{in}(w_1,...,w_K) Ein(w1,...,wK)

    采用同样的处理方式
    m a x   1 N ∏ i = 1 N h y ( x ) → m i n   − 1 N ∑ i = 1 N l o g ( h y ( x ) ) max\ \frac{1}{N}\prod_{i=1}^Nh_y(\mathbb{x})\to min\ -\frac{1}{N}\sum_{i=1}^Nlog(h_y(\mathbb{x})) max N1i=1Nhy(x)min N1i=1Nlog(hy(x))
    将MLR的假设函数代入上式并化简可得:
    1 N ∑ n = 1 N ( l n ( ∑ i = 1 K e x p ( w i T x n ) ) − w y n T x n ) \frac{1}{N}\sum_{n=1}^N\big(ln(\sum_{i=1}^Kexp(w_i^T\mathbb{x}_n))-w^T_{y_n}\mathbb{x}_n\big) N1n=1N(ln(i=1Kexp(wiTxn))wynTxn)


    在这里插入图片描述
    针对上述的 E i n E_{in} Ein,它的一阶导数 ∇ E i n \nabla E_{in} Ein可以表示为 ( ∂ E i n ∂ w 1 , ∂ E i n ∂ w 2 , , . . . , ∂ E i n ∂ w K ) \big(\frac{\partial E_{in}}{\partial w_1},\frac{\partial E_{in}}{\partial w_2,},...,\frac{\partial E_{in}}{\partial w_K}\big) (w1Ein,w2,Ein,...,wKEin),求 ∂ E i n ∂ w i \frac{\partial E_{in}}{\partial w_i} wiEin

    直接对A16的答案的式子进行求导,就可以得到下式:
    1 N ∑ n = 1 N ( ( h i ( x n ) − [ y n = i ] x n ) \frac{1}{N}\sum_{n=1}^N\big((h_i(\mathbb{x}_n)-[y_n=i]\mathbb{x}_n\big) N1n=1N((hi(xn)[yn=i]xn)


    问题18-20:关于logistic regression实现的问题。

    首先看一下算法:

    函数集: s = ∑ i = 0 d w i x i s=\sum_{i=0}^dw_ix_i s=i=0dwixi h ( x ) = θ ( s ) = 1 1 + e − s h(\mathbb{x})=\theta(s)=\frac{1}{1+e^{-s}} h(x)=θ(s)=1+es1

    损失函数: E i n ( w ) = 1 N ∑ i = 1 N l n ( 1 + e x p ( − y n w T x n ) ) E_{in}(w)=\frac{1}{N}\sum_{i=1}^Nln(1+exp(-y_nw^T\mathbb{x}_n)) Ein(w)=N1i=1Nln(1+exp(ynwTxn))

    梯度: ∇ E i n = 1 N ∑ i = 1 N θ ( − y n w T x n ) ( − y n x n ) \nabla E_{in}=\frac{1}{N}\sum_{i=1}^N\theta\big(-y_nw^T\mathbb{x}_n\big)(-y_n\mathbb{x}_n) Ein=N1i=1Nθ(ynwTxn)(ynxn)

    目标:寻找一个最佳假设函数使得损失函数最小

    (注: h ( x ) h(\mathbb{x}) h(x)来近似 P ( y ∣ x ) P(y|\mathbb{x}) P(yx)上述的损失函数通过cross-entropy可推导出来)

    Logistic Regression:

    初始化 w w w
    For t=0,1,…
    ① 计算 ∇ E i n ( w ) \nabla E_{in}(w) Ein(w)
    ② 更新参数: w ← w − η ∇ E i n ( w ) w\gets w-\eta\nabla E_{in}(w) wwηEin(w)
    返回 w w w

    (上述 η \eta η可以视为一个超参数,可以通过cross-validation来确定)


    在这里插入图片描述
    针对 η = 0.001 ,   T = 2000 \eta=0.001,\ T=2000 η=0.001, T=2000的情况,采用梯度下降法获得 w w w后,在测试集上的错误率是多少?(利用0/1判据)

    Ein = 0.466;Eout = 0.475。


    在这里插入图片描述
    针对 η = 0.01 ,   T = 2000 \eta=0.01,\ T=2000 η=0.01, T=2000的情况,采用梯度下降法获得 w w w后,在测试集上的错误率是多少?(利用0/1判据)

    Ein = 0.197;Eout = 0.22。


    在这里插入图片描述
    针对 η = 0.001 ,   T = 2000 \eta=0.001,\ T=2000 η=0.001, T=2000的情况,采用随机梯度下降法(此处采用按顺序每次选择元素,更通常的做法是随机选择元素)获得 w w w后,在测试集上的错误率是多少?(利用0/1判据)

    Ein = 0.464;Eout = 0.473。


    import numpy as np
    import pandas as pd
    import math
    import scipy.linalg as lin # 该模块包含线性代数的函数
    import matplotlib.pyplot as plt
    
    # Q3:4种不同的误差衡量和0/1误差
    plt.figure(dpi=150)
    plt.style.use('science')
    z = np.arange(-2, 2, 0.01)
    
    err0 = z.copy()
    err0[err0 >= 0] = 0
    err0[err0 < 0] = 1
    
    err1 = 1-z.copy()
    err1[err1 < 0] = 0
    
    err2 = -z.copy()
    err2[err2 < 0] = 0
    
    err3 = 1-z.copy()
    err3[err3 < 0] = 0
    err3 = np.power(err3, 2)
    
    err4 = 1/2 * (np.exp(-z))
    
    plt.plot(z, err0, label='err0/1')
    plt.plot(z, err1, label='err1')
    plt.plot(z, err2, label='err2')
    plt.plot(z, err3, label='err3')
    plt.plot(z, err4, label='err4')
    
    plt.legend()
    plt.show()
    
    # Q7
    u = 0
    v = 0
    eta = 0.01
    for i in range(5):
        du = math.exp(u) + v*math.exp(u*v) + 2*u-2*v-3
        dv = 2*math.exp(2*v) + u*math.exp(u*v) - 2*u + 4*v-2
        u -= eta*du
        v -= eta*dv
    print('u=', np.round(u,decimals=4))
    print('v=', np.round(v,decimals=4))
    E = math.exp(u)+math.exp(2*v)+math.exp(u*v)+u**2-2*u*v+2*v**2-3*u-2*v
    print(np.round(E,decimals=4))
    
    # Q10
    u = 0; v = 0
    uv = np.array([[0], [0]])
    
    for i in range(5):
        du = math.exp(u) + v*math.exp(u*v) + 2*u - 2*v - 3
        dv = 2*math.exp(2*v) + u*math.exp(u*v) - 2*u + 4*v-2
    
        du2 = math.exp(u) + v**2*math.exp(u*v) + 2
        dv2 = 4*math.exp(2*v) + u**2*math.exp(u*v) + 4
        dudv = math.exp(u*v) + v*u*math.exp(u*v) - 2
        
        ddE = np.array([[du2, dudv], [dudv, dv2]])
        dE = np.array([[du], [dv]])
        uv = uv-lin.inv(ddE).dot(dE) # linalg.inv():矩阵求逆
        u = uv[0, 0]
        v = uv[1, 0]
    print('u and v: ',uv.T)
    E = math.exp(u) + math.exp(2*v) + math.exp(u*v) + u**2 - 2*u*v + 2*v**2 - 3*u -2*v
    print('E: ',E)
    
    # 数据生成函数
    def generate_data(num):
        axeX = np.random.uniform(-1, 1, num) # 在[-1,1)内随机采样
        axeY = np.random.uniform(-1, 1, num)
        
        # np.c_:按【列】连接两个矩阵,要求行数相等。np.r_:按【行】连接两个矩阵,要求列数相等;
        Xtemp = np.c_[axeX, axeY]
        X = np.c_[np.ones((num, 1)), Xtemp]
        
        Ytemp = np.sign(np.power(axeX, 2)+np.power(axeY, 2)-0.6)
        Ytemp[Ytemp == 0] = -1
        
        pos = np.random.permutation(num)
        Ytemp[pos[0: round(0.1*num)]] *= -1
        
        Y = Ytemp.reshape((num, 1))
        
        return X, Y
    
    totalerr = 0
    for i in range(1000):
        X, Y = generate_data(1000)
        
        theta = lin.pinv(X.T.dot(X)).dot(X.T).dot(Y) # linalg.pinv矩阵伪逆
        
        ypred = np.sign(X.dot(theta))
        
        err = np.sum(ypred!=Y)/1000
        
        totalerr += err
        
    print('Ein: ', totalerr/1000)
    
    # 特征转换函数
    def transform(X):
        row, col = X.shape
        Xback = np.zeros((row, 6))
        Xback[:, 0:col] = X
        Xback[:, col] = X[:, 1]*X[:, 2]
        Xback[:, col+1] = X[:, 1]**2
        Xback[:, col+2] = X[:, 2]**2
        return Xback
    
    # Q14
    totalerr = 0
    for i in range(1000):
        X, Y = generate_data(1000)
        Xtran = transform(X)
        
        theta = lin.pinv(Xtran.T.dot(Xtran)).dot(Xtran.T).dot(Y)
        
        Xtest, Ytest = generate_data(1000)
        
        Xback = transform(Xtest)
        
        ypred = np.sign(Xback.dot(theta))
        
        err = np.sum(ypred!=Ytest)/1000
        
        totalerr += err
        
    print('theta: ', theta.T)
    print('Ein: ', totalerr/1000)
    
    # sigmoid函数
    def sigmoid(z):
        zback = 1/(1+np.exp(-1*z))
        return zback
    
    
    # Logistic Regression
    def logistic_regression(X, Y, eta, numiter, flag=0):
        row, col = X.shape
        theta = np.zeros((col, 1))
        num = 0
        for i in range(numiter):
            if flag == 0:
                derr = (-1*X*Y).T.dot(sigmoid(-1*X.dot(theta)*Y))/row
            else:
                if num >= row:
                    num = 0
                derr = -Y[num, 0]*X[num: num+1, :].T*sigmoid(-1*X[num, :].dot(theta)[0]*Y[num, 0])
                num += 1
            theta -= eta*derr
        return theta
    
    # 导入数据函数
    def load_data(filename):
        data = pd.read_csv(filename, sep='\s+', header=None)
        col, row = data.shape
        X = np.c_[np.ones((col, 1)), data.iloc[:, 0: row-1]]
        Y = data.iloc[:, row-1:row].values
        return X, Y
    
    # 误差计算函数
    def mistake(X, Y, theta):
        yhat = X.dot(theta)
        yhat[yhat > 0] = 1
        yhat[yhat <= 0] = -1
        err = np.sum(yhat != Y)/len(Y)
        return err
    
    X, Y = load_data('hw3_train.dat')
    testX, testy = load_data('hw3_test.dat')
    
    # Q18
    eta = 0.001; T = 2000; flag = 0
    theta = logistic_regression(X, Y, eta, T, flag)
    errin = mistake(X, Y, theta)
    errout = mistake(testX, testy, theta)
    print(f'Ein = {errin};', 'Eout = ', errout)
    
    # Q19
    eta = 0.01; T = 2000; flag = 0
    theta = logistic_regression(X, Y, eta, T, flag)
    errin = mistake(X, Y, theta)
    errout = mistake(testX, testy, theta)
    print(f'Ein = {errin};', 'Eout = ', errout)
    
    # Q20
    eta = 0.001; T = 2000; flag = 1
    theta = logistic_regression(X, Y, eta, T, flag)
    errin = mistake(X, Y, theta)
    errout = mistake(testX, testy, theta)
    print(f'Ein = {errin};', 'Eout = ', errout)
    

    参考:
    机器学习基石作业3:https://github.com/AceCoooool/MLF-MLT

    展开全文
  • 1. 直接理解一阶导指引梯度方向,二阶导指引梯度方向如何变化,所以二阶信息本身就能让梯度收敛更快更准确。 这里可以对比牛顿法和SGD。牛顿法是二阶收敛,梯度下降是一阶收敛,当初始点选取合理的情况下,牛顿法比...

    1. 直接理解一阶导指引梯度方向,二阶导指引梯度方向如何变化,所以二阶信息本身就能让梯度收敛更快更准确。

    这里可以对比牛顿法和SGD。牛顿法是二阶收敛,梯度下降是一阶收敛,当初始点选取合理的情况下,牛顿法比梯度下降法收敛的速度快。通俗的讲,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)



    2. 【模块化】可以很方便地自定义损失函数,只要这个损失函数可以求一阶和二阶导

    《机器学习技法》中从GBDT求回归问题可以看到,如果只是1阶泰勒展开的话,这时候想要最小化损失函数,寻找的函数h就会变成负无穷。这时,GBDT想,反正最小化损失函数会用h * 步长(参考梯度下降),因为步长后续可以优化,h的大小我无所谓。于是用了打补丁的方式对h作限制,加入h^2项。

    preview

    2、而Xgboost我理解是从根本上为了防止h等于负无穷这种尴尬的情况出现,从泰勒展开这一步就避免:

    f(x + h) =  二阶导h(x) ^2 + 一阶导h(x) + f(x)

    最终求最小化是关于h的二次方程,这样就可以直接求最小化h,而不用打补丁。

    所以:相比于GBDT每次一阶导后要打补丁,Xgboost我理解更加模块化,直接塞进去一个可二阶泰勒展开的损失函数就行

     

    展开全文
  • 欢迎关注微信公众号:剑指风险(剑指风险)一.... Boosting的框架, 无论是GBDT还是Adaboost, 其在每一轮迭代中, 根本没有理会损失函数具体是什么, 仅仅用到了损失函数的一阶导数通过随机梯度下降来参数更新二阶导...

    30dafc4b84e2a01bf71865034fa7bc02.png

    欢迎关注微信公众号:剑指风险(剑指风险)

    一.XGBoost损失函数的预备知识

    • 损失函数:损失函数描述了预测值和真实标签的差异,通过对损失函数的优化来获得对学习任务的一个近似求解方法
    • boosting类算法的损失函数的作用: Boosting的框架, 无论是GBDT还是Adaboost, 其在每一轮迭代中, 根本没有理会损失函数具体是什么, 仅仅用到了损失函数的一阶导数通过随机梯度下降来参数更新
    • 二阶导数:GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数
    • 牛顿法梯度更新:XGBoost是用了牛顿法进行的梯度更新。通过对损失进行分解得到一阶导数和二阶导数并通过牛顿法来迭代更新梯度。

    二.xgboost损失函数修正的方法

    基于XGBoost的损失函数的分解求导,可以知道XGBoost的除正则项以外的核心影响因子是损失函数的1阶导和2阶导,所以对于任意的学习任务的损失函数,可以对其求一阶导数和二阶导数带入到XGBoost的自定义损失函数范式里面进行处理。

    def custom_obj(pred, dtrain):#pred 和dtrain 的顺序不能弄反
        # STEP1 获得label
        label = dtrain.get_label()
        # STEP2 如果是二分类任务,需要让预测值通过sigmoid函数获得0~1之间的预测值
        # 如果是回归任务则下述任务不需要通过sigmoid
        #分类任务sigmoid化
        def sigmoid(x):
            return 1/(1+np.exp(-x))
        sigmoid_pred = sigmoid(-原始预测值)
        #回归任务
        pred = 原始预测值
        # STEP3 一阶导和二阶导
        grad = 一阶导
        hess = 二阶导
    
        return grad, hess

    三.常见的损失函数修正

    分类问题

    非平衡分类学习任务,例如首笔首期30+的风险建模任务,首期30+的逾期率比例相对ever30+的逾期率为1/3左右,通过修正占比少的正样本权重来对影响正样本对损失函数的贡献度,可以进一步提升模型的

    • 加权损失函数
    def 
    • Focal loss

    focal loss 的理解 https://www.cnblogs.com/king-lps/p/9497836.html

    #focal 损失
    

    回归问题

    应用场景

    美团的ETA预估

    https://tech.meituan.com/2019/02/21/meituan-delivery-eta-estimation-in-the-practice-of-deep-learning.html

    通过对损失函数进行修正大幅度提高了业务预测效果(使得结果倾向于提前到达)

    1.带惩罚的最小二乘损失函数

    def 

    https://www.kaggle.com/c/allstate-claims-severity/discussion/24520#140255

    kaggle 的保险定价竞赛中评价函数为MAE(存在不可导区域),通过使用下述的损失函数来获得MAE的近似损失函数来求解该问题

    1.fair loss

    def 

    https://www.kaggle.com/c/allstate-claims-severity/discussion/24520#140255 提供了非常高质量的近似MAE损失函数优化的讨论

    2.mae的近似损失函数- Pseudo Huber loss

    def 

    3.mae的近似损失函数 ln(cosh) loss

    def 

    4.应用方法

    bst 

    四.XGBoost复习八股文-推导流程

    最后提供给大家一个复习XGBoost的全流程图,从损失函数的分解到叶子阶段权重到如何分裂提供了非常清晰的推导

    4942b2c67e21d0de0cbdd5ad95bab4fe.png

    五.引用

    • https://blog.csdn.net/a819825294/article/details/51206410#0-tsina-1-4505-397232819ff9a47a7b7e80a40613cfe1
    • https://blog.csdn.net/qq_27782503/article/details/109161703
    展开全文
  • 损失函数优化方法

    千次阅读 2017-10-02 22:29:27
    它是一种迭代算法,每一步需要求解的目标函数的梯度向量。假设 f(x)f(x) 是 Rn\mathbf R^n 上具有一阶连续偏导数的函数。要求解的无约束最优化问题是:minx∈Rnf(x)\min_{x \in \mathbf R^n} f(x)x∗x^* 表示目标...

    梯度下降法

    梯度下降法是求解无约束最优化问题的一种最常用方法,有实现简单的优点。它是一种迭代算法,每一步需要求解的目标函数的梯度向量。

    假设 f(x) Rn 上具有一阶连续偏导数的函数。要求解的无约束最优化问题是:

    minxRnf(x)

    x 表示目标函数 f(x) 的极小点。

    由于负梯度方向是使函数值下降最快的方向,在迭代的每一步,以负梯度方向更新 x 的值,从而达到减少函数值的目的。

    梯度下降的相关概念

    1. 步长:步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。

    2. 待求解的函数

    3. 待求解函数的导数

    4. 变量1:当前找到的变量,这个变量是“我们认为”当前找到的最好的变量,可以是函数达到最优值(这里是最小值)。

    5. 变量2:梯度,对于绝大多数的函数来说,这个就是函数的负导数。

    比如如下的迭代公式:

    θi+1j=θij+αθijJ(θij)

    特点

    1. 初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
    2. 越接近最小值时,下降速度越慢;

    如何取到一个正确的 α

    • 随时观察,如果 cost function 变小了,则 OK,反之,再取一个更小的值

    如何理解泰勒展开

    在实际应用中对于具有复杂形式的函数我们常常希望用较为简单的函数形式表示他,那多项式就是这种简单的形式。

    首先还是先回到函数的局部线性近似这个概念。

    举个例子,例如函数 y=x3 ,当自变量有变化时,即 Δx ,因变量 y 会变化 Δy ,带入到函数里面就有

    Δy=(x+Δx)3x3=3x2Δx+3x(Δx)2+(Δx)3

    Δx0 时,上式的后两项是 Δx 的高阶无穷小,舍去的话就变成了

    Δy=3x2Δx

    也就是说当自变量 x 足够小的时候,也就是在某点很小的邻域内,Δy 是可以表示成 Δx 的线性函数的。线性函数计算起来,求导会很方便。

    对于一般函数,当在某点很小领域内我们也可以写成类似上面的这种自变量和因变量之间线性关系,

    Δy=f(x0+Δx)f(x0)f(x0)Δx

    变化一下形式,

    Δy=f(x)f(x0) Δx=xx0 代入上式有,

    f(x)f(x0)=f(x0)(xx0) $

    移项有:

    f(x)=f(x0)+f(x0)(xx0)

    这个式子就很熟悉了,这个就是在 x0 点邻域内舍掉高阶无穷小以后得到的局部线性近似公式。为了提高近似的精确度,于是把上面的一次近似多项式修正为二次多项式(利用洛必达法则和二阶导数定义)再进一步,二次修正为三次,一直下去就得到了 n 阶泰勒多项式了。所谓更精确地近似也就有了更高的密切程度,这种程度是通过导数体现的。

    例如只做了一次近似的话,

    f(x)=f(x0)+f(x0)(xx0)

    近似的多项式和原始式是通过同一个点 x0 的。若进行二次近似,

    f(x)=f(x0)+f(x0)(xx0)+f′′(x0)2!(xx0)

    近似的多项式和原始函数既通过同一个点 x0 而且在同一点的导数也相同。,也就是多项式表达式的函数在 x0 点的切线也相同。

    类似进行三次近似的话,不仅切线相同,弯曲程度也相同。一直下去。。。。。

    最后,总结一下好了,泰勒展开就是用形式简单的多项式来近似在 x0 邻域内的函数,展开越多近似程度越高。

    牛顿法

    为简单起见,考虑 N=1 的简单情形,牛顿法的基本思想是:在现有极小点估计值附近对 f(x) 做泰勒展开,进而找到极小点的下一个估计值。设 xk 为当前极小点的估计值,则:

    φ(x)=f(xk)+f(xk)(xxk)+12f′′(xk)(xxk)2

    表示 f(x) xk 附近的二阶泰勒展开式,由于求的是最值,由极值必要条件可知, φ(x) 应满足

    φ(x)=0

    即,

    f(xk)+f′′(xk)(xxk)=0

    进而求得

    x=xkf(xk)f′′(xk),k=1,2,

    于是,若给定初始值 x0 ,则可以构造如下的迭代格式

    xk+1=xkf(xk)f′′(xk),k=1,2,,

    产生序列 {x_k} 来逼近 f(x) 的极小点,在一定条件下,{x_k} 可以收敛到 f(x) 的极小点。

    对于 N>1 的情形,二阶泰勒展开可以做推广,此时

    φ(x)=f(xk)+f(xk)(xxk)+12(xxk)T2f(xk)(xxk)

    其中 f f 梯度向量2f f 海森矩阵,其定义为:

    f=fx1fx2fxN,2f=2fx212fx1x22fx1xN2fx2x12fx222fx2xNfxNx1fxNx22fx2NN×N

    注意, f 2f 中的元素均为关于 X 的函数,以下分别将其简记为 g H 。特别的,若 f 的混合偏导数可交换次序,则海森矩阵 H 对称矩阵,而f(xk) 2f(xk) 则表示将 X 取为 Xk 后得到的实值向量和矩阵,以下分别将其简记为 gk Hk

    同样的,由于是求极小点,极值必要条件要求它为 φ(x) 驻点,即

    φ(X)=0,

    亦即

    gk+Hk(XXk)=0

    进一步,若 Hk 非奇异,则可解得

    X=XkH1kgk

    于是给定初值 X0 ,则同样可以构造出迭代式

    Xk+1=XkH1kgk,k=0,1,

    这就是原始的牛顿迭代法。其迭代公式的搜索方向 dk=H1kgk 称为牛顿方向

    展开全文
  • Focal Loss的主要思想就是改变损失函数。可以参考https://www.cnblogs.com/king-lps/p/9497836.html xgboost如果想应用focal loss可以使用自定义损失函数来实现。 首先介绍一个比较好用的求导的python包 sympy。用...
  • 损失函数 我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(Loss Function)作为其目标函数,又称为代价函数(Cost ...
  • Catboost自定义损失函数初探

    千次阅读 2020-01-29 12:38:26
    目录问题背景:二分类损失LogLoss公式推导代码实现多分类损失MultiLoss公式推导代码实现自定义Loss注意事项结语新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段...
  • 《为什么梯度的负方向是损失函数下降最快的方向》   之前从来没有考虑过这个问题如何证明,因为函数某点处的梯度作为一个向量它自身就是指向着某点处变化最大的方向的,所以梯度的负方向肯定是下降最快的方向,...
  • 即GDBT在优化中使用了一阶导数信息,而XGB对损失函数进行了二阶泰勒展开,用到了一阶和二阶倒数信息。XGB在损失函数中加入了正则项(树叶子节点个数,每个叶子节点上输出score的L2模平方和。对于缺失的样本,XGB可以自动...
  • xgboost的原理,损失函数,优化,

    万次阅读 多人点赞 2019-07-25 23:35:37
    子树cart树,并且叶子节点为分数,不是类别,所有多棵树损失和容易优化,速度快 分步提升,先优化一棵树,后面逐渐加入子树损失f,逐步优化 目录 2、xgboost 3、训练xgboost 4、加法训练 5、模型正则化项 6...
  • 泰勒展开: 以二阶导为例 则f(x+V)-f(X)=df(x)V,则我们可以得出: df(x)V为函数值的变化量,注意的是df(x)和V均为向量,df(x)v也就是两个向量进行点积,而向量进行点积的最大值,也就是两者共线的时候,也就是说V的...
  • Tensorflow2.0 + Transformers 实现Bert FGM抗训练惩罚梯度损失函数前言变种实现Transformers中的word_embeddings代码修改实验效果总结 前言 之前看了很多关于NLP中应用对抗训练的文章,测试结果都很香,所以想在...
  • adaboost和GBDT和xgboost在损失函数的最优化方法是有很多不同的,三者的不同之处其实就在于最优化方法的不同(这样说不知道是否妥当,至少站在这个角度的我认为是正确的,多年后可能发现这个观点不太妥当)。...
  • 理解高阶损失函数在深度学习可解释性方面的应用 (原论文名:Understanding Impacts of High-Order Loss Approximations and Featuresin Deep Learning Interpretation) 作者: Sahil Singla, Eric Wallace, ...
  • CNN 1 卷积神经网络与传统多层神经...通常所说的深度学习,一般指的是这些CNN等新的结构以及一些新的方法(比如新的激活函数Relu等),解决了传统多层神经网络的一些难以解决的问题 神经网络(neural networks)的基
  • 一、导数(一元函数) 导数,反映的是函数 y=f(x)y=f(x)y=f(x) 在某一点处沿xxx轴正方向的变化率。公式定义如下: 再强调一遍,导数f’(x)f’(x)f’(x)是函数f(x)f(x)f(x)在xxx轴上某一点处沿着xxx轴正方向的变化率...
  • xgboost为什么用泰勒展开?是有放回选特征吗?...实际上使用二阶泰勒展开是为了xgboost能够【自定义loss function】,如果按照最小二乘法的损失函数直接推导,同样能够得到陈大佬最终的推导式子:...
  • xgboost与gbdt区别

    2018-10-01 19:50:00
    1.基分类器的选择:传统GBDT以CART作为基分类器,XGBoost还支持线性分类...XGBoost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶损失函数的导数。顺便提一下,XGBoost工具支持自定义损失函数,只要函数可一...
  • 泰勒公式--泰勒多项展开以及应用

    千次阅读 2021-04-07 10:52:13
    泰勒级数是把一个函数展开,化成次方项相加的形式,目的是用相对简单的函数去拟合复杂函数,此时相对简单是看你需要的,一阶指展开的次数最高为1,二阶指展开次数最高为2。 泰勒公式的几何意义是利用多项式函数来...
  • 机器学习——xgboost

    2021-06-03 14:16:04
    损失函数2.GBDT与XGBoost区别二.实战数据接口参数基于天气数据集的XGBoost分类实战 基于树模型的XGBoost则能很好地处理表格数据.所以打比赛常用 一.基础知识 1.损失函数 L1、L2、smooth L1三类损失函数 2.GBDT与...
  • XGBoost算法个人理解

    2021-02-20 19:27:04
    XGBoost算法仍然是一种使用加法模型和前向分布算法...这个损失函数的形式类似于加入L1或L2正则化的逻辑回归损失函数二阶泰勒展开公式: 对应用二阶泰勒展开公式,其中相当于,相当于 ,相当于,是一个函数.
  • 泰勒公式: ...梯度下降是逐步迭代,损失函数逐步降低的过程: 为了满足上述不等式条件,取,则上式变为: 因为是步长,,所以上述不等式成立。 从而得出梯度下降的参数更新公式: ...
  • 但从本质上来说,那些方法都是一阶的方法,即利用了损失函数的一阶导数的信息进行迭代,没有对于二阶导数的信息进行使用。本文主要介绍常见的二阶梯度下降方法,比如牛顿法、拟牛顿法等,在一般情况下,二阶梯度下降...
  • 机器学习(二)

    千次阅读 2020-08-19 11:40:02
    同时因为xgboost的损失函数是基于MSE的,这样有更好的扩展性,任何可以进行二阶泰勒展开的都可以自定义其损失函数,既可分类也可回归。 2、过拟合的解决方案 重新清洗样本,增加样本数量进行样本集扩充,最简单
  • 浅谈XGBoost

    2018-02-28 21:33:00
    根据其开发者陈天琪在XGBoost论文中的叙述,XGBoost的基本思想差不多可以理解成以损失函数二阶泰勒展开式作为其替代函数,求解其最小化(导数为0)来确定回归树的最佳切分点和叶节点输出数值(这一点和cart回归树...
  • XGBOOST算法原理

    2021-03-21 22:10:36
    传统的GBDT在优化时只使用一阶导数,而xgboost对损失函数做了二阶泰勒展开,同时用到了一阶和二阶导数,并且xgboost支持使用自定义损失函数,只要损失函数可一阶,二阶求导。 在损失函数里加入了正
  • 大白话5分钟带你走进人工智能-...谈到这个,我们要谈到一个叫泰勒展开的这么一个数学定理,泰勒发现任何一个函数不用管它有多复杂,不管它什么样,千奇百怪的任何一个函数,都可以写成关于N阶导数的一个多项式。即 ...
  • 牛顿法和梯度下降法

    2019-09-20 16:15:26
    机器学习基本就是把问题转化成某个损失函数,然后求极值。函数的极值分为全局极值和局部极值,两种都满足一个条件f′=0f^{\prime}=0f′=0或∇f=0\nabla f=0∇f=0。 牛顿法:二阶泰勒级数逼近 单元函数 在初始值x0x_...
  • 为什么要介绍梯度下降法和牛顿法那? 这里提及两个算法模型GBDT和XGBoost,两...xgboost利用二阶泰勒展开三项,做一个近似 言为之意, GBDT在函数空间中利用梯度下降法进行优化 XGBoost在函数空间中用牛顿法进行...
  • ML问题总结

    2018-09-01 14:36:40
    GBDT与Xgboost区别 GBDT与RF区别 GBDT与传统Boosting的区别 树模型的优缺点 样本比例不平衡的处理方法 GBDT与Xgboost区别 ...传统GBDT对损失函数进行一阶泰勒展开,...Xgboost则对损失函数进行了二阶泰勒展开,同...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,276
精华内容 1,310
关键字:

二阶泰勒损失函数