cs231_n4.2神经网络

反向传播回顾

背景

模型s=f(x;W)=Wx
SVM损失/softmax损失

L_{i}=\sum_{j\neq c}^{C}max(0,s_{j} -s_{c}+1)           

整体损失函数L=\frac{1}{N}\sum_{i}^{N}L_{i}+\sum _{k}W_{k}^{2}
目标找到使得L最小的W。为了找到W,需要求L在W方向上的梯度。

反向传播

反向传播是指在神经网络中,将上层节点的梯度值进行反向地传播,进而求解整个网络节点上的梯度,可以递归地调用链式法则,来计算图中每个变量的梯度。

 

整个网络的输出节点的梯度值为1。对于中间节点来说,它的输出部分会接收来自上层节点的梯度值。该节点中所有的输入都有对应的局部梯度函数。对于某个输入来说,上层节点梯度值*该输入的局部梯度函数值=该输入的梯度值。在编写代码时,forward()进行计算操作,并将梯度计算所需的中间值保存在内存中。backward()应用链式法则计算损失函数相对于该节点输入的梯度。

  

  

 

神经网络(Neural Networks)

神经网络是由简单函数构成的一组函数,这些函数以层次化的方式进行堆叠,从而形成一个更复杂的非线性函数。一个简单的三层神经网络(或称为双隐层神经网络)由两个全连接的隐层,如下图所示:

 

该网络的前向传播代码如下(代码来自视频):

# forward-pass of a 3-layer neural network:
f = lambda x: 1.0/(1.0+np.exp(-x)) # activation function (use sigmoid)
x = np.random.randn(3,1) # random input vector of three numbers (3*1)
h1 = f(np.dot(W1,x) + b1) # calculate first hidden layer activations (4*1)
h2 = f(np.dot(W2,h1) + b2) # calculate second hidden layer activations (4*1)
h3 = np.dot(W3,h2) + b3 # output neuron (1*1)

激活函数

这里列出神经网络中常用的非线性激活函数,如图所示。

 

转载自:https://blog.csdn.net/KKALL1314/article/details/104119076#S4.1%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%28Backpropagation%29

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值