Ng机器学习笔记 神经网络

非线性假设

之前学的缺点:特征太多时,计算的负荷大。
普通的逻辑回归模型,不能有效地处理很多特征。

模型的表示

前向传播算法( FORWARD PROPAGATION )

在这里插入图片描述
类似于神经元的神经网络:

在这里插入图片描述

x 1 x_1 x1, x 2 x_2 x2, x 3 x_3 x3:输入单元(input units),原始数据输入。
a 1 a_1 a1, a 2 a_2 a2, a 3 a_3 a3:中间单元,数据处理,呈递到下一层。
输出单元:计算 h θ ( x ) {h_\theta}\left( x \right) hθ(x)

每一层的输出变量都是下一层的输入变量。

  • 下图为一个3层的神经网络:
    • 第一层------输入层(Input Layer)

    • 最后一层------输出层(Output Layer)

    • 中间一层------隐藏层(Hidden Layers)

    • 每一层都有一个偏差单位(bias unit)

在这里插入图片描述

a i ( j ) a_{i}^{\left( j \right)} ai(j) :第 j j j 层的第 i i i 个激活单元。
θ ( j ) {{\theta }^{\left( j \right)}} θ(j): 从第 j j j 层映射到第$ j+1$ 层时的权重的矩阵

  • 其尺寸为:以第 j + 1 j+1 j+1层的激活单元数量为行数,以第 j j j 层的激活单元数加一为列数的矩阵。例如:上图所示的神经网络中 θ ( 1 ) {{\theta }^{\left( 1 \right)}} θ(1)的尺寸为 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 {10}^{(1)}{{x}{0}}+\Theta {11}^{(1)}{{x}{1}}+\Theta {12}^{(1)}{{x}{2}}+\Theta {13}^{(1)}{{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 {20}^{(1)}{{x}{0}}+\Theta {21}^{(1)}{{x}{1}}+\Theta {22}^{(1)}{{x}{2}}+\Theta {23}^{(1)}{{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 {30}^{(1)}{{x}{0}}+\Theta {31}^{(1)}{{x}{1}}+\Theta {32}^{(1)}{{x}{2}}+\Theta {33}^{(1)}{{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 {10}^{(2)}a{0}^{(2)}+\Theta {11}^{(2)}a{1}^{(2)}+\Theta {12}^{(2)}a{2}^{(2)}+\Theta {13}^{(2)}a{3}^{(2)}) hΘ(x)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))

上述讨论中只是将特征矩阵中的一行(一个训练实例)喂给了神经网络,实际需要将整个训练集都喂给神经网络。

每一个 a a a都是由上一层所有的 x x x和每一个 x x x所对应的决定的。

x x x, θ \theta θ, a a a 分别用矩阵表示:

在这里插入图片描述

可得 θ ⋅ X = a \theta \cdot X=a θX=a

向量化

计算更简便。以上面的神经网络为例,算第二层的值:
在这里插入图片描述
在这里插入图片描述

z ( 2 ) = θ ( 1 ) x {{z}^{\left( 2 \right)}}={{\theta }^{\left( 1 \right)}}x z(2)=θ(1)x,则 a ( 2 ) = g ( z ( 2 ) ) {{a}^{\left( 2 \right)}}=g({{z}^{\left( 2 \right)}}) a(2)=g(z(2)) ,计算后添加 a 0 ( 2 ) = 1 a_{0}^{\left( 2 \right)}=1 a0(2)=1。 输出的值为:
在这里插入图片描述
z ( 3 ) = θ ( 2 ) a ( 2 ) {{z}^{\left( 3 \right)}}={{\theta }^{\left( 2 \right)}}{{a}^{\left( 2 \right)}} z(3)=θ(2)a(2),则 h θ ( x ) = a ( 3 ) = g ( z ( 3 ) ) h_\theta(x)={{a}^{\left( 3 \right)}}=g({{z}^{\left( 3 \right)}}) hθ(x)=a(3)=g(z(3))。 这只是针对训练集中一个训练实例所进行的计算。如果我们要对整个训练集进行计算,我们需要将训练集特征矩阵进行转置,使得同一个实例的特征都在同一列里。即:

a ( 2 ) = g ( z ( 2 ) ) {{a}^{\left( 2 \right)}}=g({{z}^{\left( 2 \right)}}) a(2)=g(z(2))

为了更好了了解Neuron Networks的工作原理,我们先把左半部分遮住:
在这里插入图片描述

右半部分其实就是以 a 0 , a 1 , a 2 , a 3 a_0, a_1, a_2, a_3 a0,a1,a2,a3, 按照Logistic Regression的方式输出 h θ ( x ) h_\theta(x) hθ(x)

在这里插入图片描述

特征和直观理解

从本质上讲,神经网络能够通过学习得出其自身的一系列特征。
普通的逻辑回归:仅使用数据中的原始特征 x 1 , x 2 , . . . , x n x_1,x_2,...,{{x}_{n}} x1,x2,...,xn
神经网络:原始特征只是输入层

单层神经元的计算表示逻辑运算

逻辑与(AND)

我们可以用这样的一个神经网络表示AND 函数:
在这里插入图片描述
其中 θ 0 = − 30 , θ 1 = 20 , θ 2 = 20 \theta_0 = -30, \theta_1 = 20, \theta_2 = 20 θ0=30,θ1=20,θ2=20
输出函数 h θ ( x ) h_\theta(x) hθ(x)即为: h Θ ( x ) = g ( − 30 + 20 x 1 + 20 x 2 ) h_\Theta(x)=g\left( -30+20x_1+20x_2 \right) hΘ(x)=g(30+20x1+20x2)
所以有: h Θ ( x ) ≈ x 1 AND , x 2 h_\Theta(x) \approx \text{x}_1 \text{AND} , \text{x}_2 hΘ(x)x1AND,x2

OR函数

OR与AND整体一样,区别只在于的取值不同。

二元逻辑运算符

当输入特征为布尔值(0或1)时,我们可以用一个单一的激活层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要选择不同的权重即可。

神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND)
神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR)
神经元(两个权重分别为 10,-20)可以被视为作用等同于逻辑非(NOT)

更复杂的运算:XNOR 功能(输入的两个值必须一样,均为1或均为0)即 XNOR = ( x 1 , AND , x 2 ) , OR ( ( NOT , x 1 ) AND ( NOT , x 2 ) ) ​ \text{XNOR}=( \text{x}_1, \text{AND}, \text{x}_2 ), \text{OR} \left( \left( \text{NOT}, \text{x}_1 \right) \text{AND} \left( \text{NOT}, \text{x}_2 \right) \right)​ XNOR=(x1,AND,x2),OR((NOT,x1)AND(NOT,x2))

首先构造一个能表达 ( NOT , x 1 ) AND ( NOT , x 2 ) ​ \left( \text{NOT}, \text{x}_1 \right) \text{AND} \left( \text{NOT}, \text{x}_2 \right)​ (NOT,x1)AND(NOT,x2)部分的神经元,然后将表示 AND 的神经元和表示 ( NOT , x 1 ) AND ( NOT , x 2 ) ​ \left( \text{NOT}, \text{x}_1 \right) \text{AND} \left( \text{NOT}, \text{x}_2 \right)​ (NOT,x1)AND(NOT,x2)的神经元以及表示 OR 的神经元进行组合

多类分类

要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层应该有4个值。第一个值为1或0用于预测是否是行人,第二个值用于判断是否为汽车。。。

输入向量 x x x有三个维度,两个中间层,输出层4个神经元分别用来表示4类,也就是每一个数据在输出层都会出现 [ a   b   c   d ] T {{\left[ a\text{ }b\text{ }c\text{ }d \right]}^{T}} [a b c d]T,且 a , b , c , d a,b,c,d a,b,c,d中仅有一个为1,表示当前类。

代价函数

假设神经网络的训练样本有 m m m个,每个包含一组输入 x x x和一组输出信号 y y y L L L表示神经网络层数, S I S_I SI表示每层的neuron个数( S l S_l Sl表示输出层神经元个数), S L S_L SL代表最后一层中处理单元的个数。

将神经网络的分类定义为两种情况:二类分类和多类分类,

二类分类: S L = 0 , y = 0 , o r , 1 S_L=0, y=0, or, 1 SL=0,y=0,or,1表示哪一类;

K K K类分类: S L = k , y i = 1 S_L=k, y_i = 1 SL=k,yi=1表示分到第 i i i类; ( k > 2 ) (k>2) (k>2)

逻辑回归只有一个输出变量,又称标量(scalar),也只有一个因变量 y y y,但是神经网络中可以有很多输出变量,我们的 h θ ( x ) h_\theta(x) hθ(x)是一个维度为 K K K的向量,并且我们训练集中的因变量也是同样维度的一个向量
代价函数为: \newcommand{\subk}[1]{ #1_k } h θ ( x ) ∈ R K h_\theta\left(x\right)\in \mathbb{R}^{K} hθ(x)RK ( h θ ( x ) ) i = i t h output {\left({h_\theta}\left(x\right)\right)}_{i}={i}^{th} \text{output} (hθ(x))i=ithoutput

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值