机器学习之正则化、神经网络简介

正则化(Regularization)

  1. 过拟合(over-fitting)
    如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0),但是可能会不能推广到新的数据。
    问题是,如果我们发现了过拟合问题,应该如何处理?
    (1)丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)
    (2)正则化。 保留所有的特征,但是减少参数的大小(magnitude)。
  2. 代价函数
    回归问题中如果我们的模型是: h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4 hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4 ,正是那些高次项导致了过拟合的产生,所以如果我们能让这些高次项的系数接近于0的话,我们就能很好的拟合了。 所以我们要做的就是在一定程度上减小这些参数 θ \theta θ的值,这就是正则化的基本方法。
    现在考虑在代价函数中加入对 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4的惩罚,即 J ( θ ) = 1 2 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) 2 + 1000 θ 3 + 1000 θ 4 ) J(\theta)=\frac{1}{2m}\sum\limits_{i=1}^{m}((h_\theta(x^{(i)})-y^{(i)})^2+1000\theta_3+1000\theta_4) J(θ)=2m1i=1m((hθ(x(i))y(i))2+1000θ3+1000θ4)通过这样的代价函数选择出的 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4对预测结果的影响就比之前要小许多。
    假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设: J ( θ ) = 1 2 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j ) J(\theta)=\frac{1}{2m}\sum\limits_{i=1}^{m}((h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum\limits_{j=1}^{n}\theta_j) J(θ)=2m1i=1m((hθ(x(i))y(i))2+λj=1nθj)按照惯例,不对 θ 0 \theta_0 θ0作惩罚。
    λ \lambda λ为正则化参数(Regularization Parameter)。
  3. 正则化线性回归
    正则化线性回归的代价函数为: J ( θ ) = 1 2 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j ) J(\theta)=\frac{1}{2m}\sum\limits_{i=1}^{m}((h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum\limits_{j=1}^{n}\theta_j) J(θ)=2m1i=1m((hθ(x(i))y(i))2+λj=1nθj)
    梯度下降法分两种情况进行:
    θ 0 = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) x 0 ( i ) \theta_0=\theta_0-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{i})-y^{(i)})x_0^{(i)} θ0=θ0αm1i=1m(hθ(xi)y(i))x0(i)
    θ j = θ j − α 1 m ∑ i = 1 m ( ( h θ ( x i ) − y ( i ) ) x j ( i ) + λ m θ j ) ,   j = 1 , 2 , ⋯   , n \theta_j=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}((h_\theta(x^{i})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j),\,j=1,2,\cdots,n θj=θjαm1i=1m((hθ(xi)y(i))xj(i)+mλθj),j=1,2,,n
    机器学习之正则化、神经网络简介_第1张图片矩阵尺寸为 ( n + 1 ) × ( n + 1 ) (n+1)\times(n+1) (n+1)×(n+1)
  4. 正则化的逻辑回归模型
    自己计算导数同样对于逻辑回归,我们也给代价函数增加一个正则化的表达式,得到代价函数: J ( θ ) = 1 m ∑ i = 1 m ( − y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) + λ 2 m ∑ j = 1 n θ j 2 ) J(\theta)=\frac{1}{m}\sum\limits_{i=1}^{m}(-y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))+\frac{\lambda}{2m}\sum\limits_{j=1}^{n}\theta_j^2) J(θ)=m1i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))+2mλj=1nθj2)

神经网络

  1. 每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。机器学习之正则化、神经网络简介_第2张图片

  2. 在神经网络中,参数又可被成为权重(weight)。

  3. 一个3层的神经网络,第一层称为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层称为隐藏层(Hidden Layers)。为每一层都增加一个偏差单位(bias unit):
    机器学习之正则化、神经网络简介_第3张图片
    一些符号含义: a i ( j ) a_{i}^{(j)} ai(j)代表第j层的第i个激活单元, Θ ( j ) \Theta^{(j)} Θ(j)代表第j层映射到第j+1层时权重矩阵,其尺寸为:以第 j+1层的激活单元数量为行数,以第 j层的激活单元数加一为列数的矩阵。如 Θ ( 1 ) \Theta^{(1)} Θ(1)的尺寸为 3 × 4 3\times4 3×4
    对上图,隐藏单元和输出表示为:
    a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_1^{(2)}=g(\Theta^{(1)}_{10}x_0+\Theta^{(1)}_{11}x_1+\Theta^{(1)}_{12}x_2+\Theta^{(1)}_{13}x_3) a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_2^{(2)}=g(\Theta^{(1)}_{20}x_0+\Theta^{(1)}_{21}x_1+\Theta^{(1)}_{22}x_2+\Theta^{(1)}_{23}x_3) a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_3^{(2)}=g(\Theta^{(1)}_{30}x_0+\Theta^{(1)}_{31}x_1+\Theta^{(1)}_{32}x_2+\Theta^{(1)}_{33}x_3) a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3) h θ ( x ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) h_{\theta}(x)=g(\Theta^{(2)}_{10}a_0^{(2)}+\Theta^{(2)}_{11}a_1^{(2)}+\Theta^{(2)}_{12}a_2^{(2)}+\Theta^{(2)}_{13}a_3^{(2)}) hθ(x)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2)) 上面进行的讨论中只是将特征矩阵中的一行(一个训练实例)喂给了神经网络,我们需要将整个训练集都喂给我们的神经网络算法来学习模型。
    每一层的神经元输出都是由上一层的神经元决定的,即为前向传播算法(从左往右)(forward propagation)。

  4. X X X, Θ \Theta Θ, a a a的矩阵表示: X = [ x 0 x 1 x 2 x 3 ] X=\begin{gathered}\begin{bmatrix} x_0 \\ x_1\\x_2\\x_3 \end{bmatrix} \quad\end{gathered} X=x0x1x2x3 Θ ( 1 ) = [ Θ 10 Θ 11 Θ 12 Θ 13 Θ 20 Θ 21 Θ 22 Θ 23 Θ 30 Θ 31 Θ 32 Θ 33 ] \Theta^{(1)}=\begin{gathered}\begin{bmatrix} \Theta_{10} & \Theta_{11} & \Theta_{12} & \Theta_{13} \\ \Theta_{20} & \Theta_{21} & \Theta_{22} & \Theta_{23} \\ \Theta_{30} & \Theta_{31} & \Theta_{32} & \Theta_{33} \end{bmatrix} \quad\end{gathered} Θ(1)=Θ10Θ20Θ30Θ11Θ21Θ31Θ12Θ22Θ32Θ13Θ23Θ33 a = [ a 0 a 1 a 2 a 3 ] a=\begin{gathered}\begin{bmatrix} a_0 \\ a_1\\a_2\\a_3 \end{bmatrix} \quad\end{gathered} a=a0a1a2a3即有: Θ X = a \Theta X=a ΘX=a

  5. 神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。
    机器学习之正则化、神经网络简介_第4张图片
    机器学习之正则化、神经网络简介_第5张图片

你可能感兴趣的:(python)