神经网络(2)

1.从感知机到神经网络

 在感知机一文中已经对感知机模型,学习算法都做了介绍,它有多个输入一个输出,多个输入经过线性变换通过一个激活函数得到输出。它可以很好地解决线性的二分类问题,但是却无法解决非线性的分类问题。比如简单的异或问题。
在这里插入图片描述
从图中我们可以看到对于异或问题,显然无法找到可以将正负样本分开的一条直线,那么感知机也就不可能学习出这样的模型。既然一个感知机无法解决非线性分类问题,那么多个感知机呢?。于是有多个感知机构成神经网络便产生了。
在这里插入图片描述
对于一个如图所示的神经网络,其中 x 1 , x 2 , x 3 x_{1},x_{2},x_{3} x1,x2,x3是输入单元,我们将原始数据输入给他们。 a 1 , a 2 , a 3 a_{1},a_{2},a_{3} a1,a2,a3是中间单元,他们负责将数据进行处理,然后传递给下一层,最后是输出单元。我们为每一层都加上一个偏置值后,神经网络变成:
在这里插入图片描述
该神经网络一共有三层,第一层称为输入层,最后一层称为输入层,中间的称为隐藏层。

对于一个神经网络来说,其隐藏层可以有多层,输出层也可以有多个输出。在感知机中,其激活函数为sign函数,但在神经网络中有多种激活函数,比如逻辑回归中的Sigmoid 函数,tanx函数,ReLU函数等。
在这里插入图片描述

2.前向传播

在这里插入图片描述

仍然以前面的神经网络为例,引入一些符号便于描述神经网络:
x 0 : 偏 置 , x 0 = 1 x_{0}:偏置,x_{0}=1 x0:x0=1
θ : 权 重 \theta:权重 θ:
a i ( j ) : 代 表 第 j 成 第 i 各 激 活 单 元 a^{(j)}_{i}:代表第j成第i各激活单元 ai(j):ji
θ ( j ) : 代 表 第 j 层 到 第 j + 1 层 的 权 重 矩 阵 \theta^{(j)}:代表第j层到第j+1层的权重矩阵 θ(j):jj+1
θ v , u ( j ) : 第 j 成 的 第 u 各 到 第 j + 1 层 的 第 v 个 单 元 的 权 重 。 \theta^{(j)}_{v,u}:第j成的第u各到第j+1层的第v个单元的权重。 θv,u(j):juj+1v$
如 果 第 j 层 有 m 个 单 元 , 第 j 加 一 层 有 n 个 单 元 , 那 么 θ ( j ) 将 会 是 一 个 n ∗ ( m + 1 ) 的 矩 阵 如果第j层有m个单元,第j加一层有n个单元,那么\theta^{(j)}将会是一个n*(m+1)的矩阵 jmjnθ(j)nm+1
s j : s_{j}: sj:第j 层的激活单元数目,不包括偏置单元
对于输入层的所有激活单元应用激活函数,得到隐藏层激活单元

a 1 ( 2 ) = g ( θ 10 ( 1 ) x 0 + θ 11 ( 1 ) x 1 + θ 12 ( 1 ) x 2 + θ 13 ( 1 ) x 3 ) a^{(2)}_{1}=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 1 ( 2 ) = g ( θ 30 ( 1 ) x 0 + θ 31 ( 1 ) x 1 + θ 32 ( 1 ) x 2 + θ 33 ( 1 ) x 3 ) a^{(2)}_{1}=g(\theta^{(1)}_{30}x_{0}+\theta^{(1)}_{31}x_{1}+\theta^{(1)}_{32}x_{2}+\theta^{(1)}_{33}x_{3}) a1(2)=g(θ30(1)x0+θ31(1)x1+θ32(1)x2+θ33(1)x3)

输出层为:

h θ ( x ) = a 1 ( 3 ) = g ( θ 10 ( 2 ) a 0 ( 2 ) + θ 11 ( 2 ) a 1 ( 2 ) + θ 12 ( 2 ) a 2 ( 2 ) + θ 13 ( 2 ) a 3 ( 2 ) ) h\theta(x)=a^{(3)}_{1}=g(\theta^{(2)}_{10}a^{(2)}_{0}+\theta^{(2)}_{11}a^{(2)}_{1}+\theta^{(2)}_{12}a^{(2)}_{2}+\theta^{(2)}_{13}a^{(2)}_{3}) hθ(x)=a1(3)=g(θ10(2)a0(2)+θ11(2)a1(2)+θ12(2)a2(2)+θ13(2)a3(2))

该计算过程就被称为正向传播。最终的 h θ ( x ) h_{\theta}(x) hθ(x)的结果与逻辑回归类似,只不过输入变成了中间变量。
反向传播的向量化实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.代价函数

根据跟类种类的不同可以将神经网络定义分为两种情况:二分类和多分类,
二分类:只有一个输出单元(K=1)
多分类问题:输出不止一个(K>1)
在这里插入图片描述
神经网络的代价函数公式:
h θ ( x ) = − 1 m ∑ i = 1 m ∑ k = 1 K [ y k ( i ) l o g ( h θ ( x ( i ) ) ) k + ( 1 − y k ( i ) ) l o g ( 1 − ( h θ ( x ( i ) ) ) k ) ] + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( θ j , i ( l ) ) 2 h{\theta}(x)=-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}[y^{(i)}_{k}log(h_{\theta}(x^{(i)}))_{k}+(1-y^{(i)}_{k})log(1-(h_{\theta}(x^{(i)}))_{k})]+\frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_{l}}\sum_{j=1}^{s_{l+1}}(\theta^{(l)}_{j,i})^{2} hθ(x)=m1i=1mk=1K[yk(i)log(hθ(x(i)))k+(1yk(i))log(1(hθ(x(i)))k)]+2mλl=1L1i=1slj=1sl+1(θj,i(l))2
L:神经网络的总层数

s l : s_{l}: sl:第i层激活单元的数量(不包括偏置单元)

h θ ( x ) k h_{\theta}(x)_{k} hθ(x)k为第k个分类的概率P

K:输出层的输出单元数量

y k i y^{i}_{k} yki:第i个训练样本的第k个分量

在代价函数中,左边的求K求和的部分实际上是为了解决多分类问题,每行特征都会给出K个预测。

右边的正则化项:每一层都有一个多维矩阵 θ ( l ) ∈ R s l + 1 ∗ ( s l + 1 ) \theta^{(l)}∈R^{s_{l+1}*(s_{l}+1)} θ(l)Rsl+1(sl+1)

,该项就是对每一层的多维矩阵 θ ( l ) \theta^{(l)} θ(l),依次平方后求和(除了偏置项的权重),在对所有样本数量求和。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值