第五部分:神经网络

chapter1 神经网络的表述

1.模型表示

基础神经元: X0=1 偏置、参数\theta又可称为权重,激活函数sigmoid:h_\theta=\frac{1}{1+e^{-\theta^Tx}}

2.神经网络:

关于层:

第一层为输入层,最后一 层为输出层,中间一层为隐藏层。我们为每一层都有一个偏差单位。

关于节点:

a^i_{(j)}——代表第𝑗 层的第 𝑖 个激活单元。

\theta^{(j)}——从第 𝑗 层映射到第𝑗 + 1 层时的权重的矩阵,例如\theta^{(1)}代表从第一层映射到第二层的权重的矩阵。其尺寸为:行数=第 𝑗 + 1层的单元数,列数=第j层单元数+1。例如:上图所示的神经网络中 \theta^{(1)}的尺寸为 3*4。

\theta^{(j)}_{mn}:在第j层的第n个激活单元到第j+1层的第m个神经元的偏执。如:x_0->a^{(2)}_1 的偏置为:\theta^{(1)}_{(10)}

 

 3.向量化:向量化后x为一维向量,theta为二维矩阵,相乘过后先不要经过sigmoid函数才能激活。

 4.直观理解

逻辑与:

 

 

 

逻辑或:

 

 

 

逻辑非:

 

构造同或逻辑神经网络(有点像数电):

x_1XNORx_2=(x_1ANDx_2)OR((NOTx_1)AND(NOTx_2))

第二部分:神经网络的学习:

符号:

m:训练样本个数

输入集:X(x)

输出:y

神经网络的层数:L

S_I:该层神经元个数

1.代价函数:

 J(\theta)=-\frac{1}{m}[\sum^m_{i=1}\sum^k_{k=1}y^{(i)}_klog(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^{s_l}_{i=1}\sum^{s_l+1}_{j=1}(\theta^{(l)}_{ji})^2

2.反向传播算法(待补充)

\delta来表示误差:

L4误差:\delta^{(4)}=a^{(4)}-y

L3误差:\delta^{(3)}=(\theta^{(3)})^T\delta^{(4)}*{g}'(z^{(3)}){g}'(z^{(3)})=a^{(3)}(1-a^3)是sigmoid的导数

L2误差:\delta^{(2)}=(\theta^{(2)})^T\delta^{(3)}*{g}'(z^{(2)})

L1:因为是输入层,不存在误差

假设不做正则化,则偏导数\frac{\partial }{\partial \theta^{(l)}_{(ij)}}J(\theta)=a^{(j)}_j\delta^{l+1}_i

算法:

3.反向传播(略)

4.展开参数:

 

5.梯度检验

问题:复杂模型进行梯度下降的时候,会存在一些不易察觉的错误,可能导致代价在减小但是结果并不是最优解。

解决方案:梯度数值检验,在代价函数上沿着切线方向选择两个非常近的点\theta-\varepsilon \ and\ \theta+\varepsilon,并计算这两个点导数的平均值用以估算梯度。

 6.综合起来

第一层单元数为输入特征数,最后一层为训练结果类的数量

如果有多个隐藏层,应确保他们党员个数相同,一般单元越多越好。

1. 参数的随机初始化

2. 利用正向传播方法计算所有的ℎ𝜃(𝑥)

3. 编写计算代价函数 𝐽 的代码
4. 利用反向传播方法计算所有偏导数

5. 利用数值检验方法检验这些偏导数

6. 使用优化算法来最小化代价函数

ps:应随机初始化,不能让初始值都为0,不然第二层所有激活值都一样,结果也都一样 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值