alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

【469】RNN, LSTM参考博客

参考:【推荐】ML Lecture 21-1: Recurrent Neural Network (Part I)

参考:Illustrated Guide to Recurrent Neural Networks

参考:Illustrated Guide to LSTM’s and GRU’s: A step by step explanation

参考:Understanding LSTM Networks

参考:Recurrent Neural Networks | MIT 6.S191 —— YouTube

参考:The Unreasonable Effectiveness of Recurrent Neural Networks

参考:Anyone Can Learn To Code an LSTM-RNN in Python (Part 1: RNN)

参考:The Unreasonable Effectiveness of Recurrent Neural Networks


RNN

feed forward

  1. input1 -> hidden layer1 -> output1
  2. (hidden layer1 + input2) -> hidden layer2 -> output2
  3. (hidden layer2 + input3) -> hidden layer3 -> output3
  4. (hidden layer3 + input4) -> hidden layer4 -> output4

back propagation(橙色是权重更新)

  1. W_hy4 -> W_xh4
  2. W_hy3 -> W_xh3
  3. W_hy2 -> W_xh2
  4. W_hy1 -> W_xh1

RNN形式

下面以 many to one RNN 举例说明

参考:https://victorzhou.com/blog/intro-to-rnns/

The Plan

  • 可以理解为一段文本,然后判断文本的sentiment
  • 每一个 xi 表示文本中每个单词的 one-hot 编码向量
  • 输出 y 是一个二维向量,分别为 positive 和 negative

The Forward Phase

公式如下:

ht=tanh(Wxhxt+Whhht1+bh)

yt=Whyht+by

  • 初始化 3 个权重矩阵和 2 个偏置向量
  • Whh: [hidden_size, hidden_size],公式里面权重值在前
  • Wxh: [hidden_size, input_size],公式里面权重值在前
  • Why: [output_size, hidden_size],公式里面权重值在前
  • bh: [hidden_size, 1]
  • by: [output_size, 1]

  • 初始化 h,赋值为全 0 的矩阵,直接用来计算 h0,因为它前面是没有 h 的
  • 循环,将 xi 的值循环传递到 hi,再传递到 yi
  • 整个过程中,WhhWxhWhybhby 的值是保持不变的
  • 最后 y 通过 softmax 函数获得概率值

The Backward Phase

  • loss function: cross-entropy loss
  • 记录 hi 的所有值
  • 【479】cross-entropy与softmax的求导
  • 求出了L 对于 yi 的偏导数
  • 再求 yi 对于 Why 的偏导数
  • y=Whyhn+by

LSTM

 

 

 

  一个 layer,用来获取 forget gate 的比例,激活函数是 sigmoid。用来计算前一个 cell 有多少部分被保留了。

 

  两个 layer

  • 左边为 input gate 的比例(sigmoid),说明有多少比例可以被输入
  • 右边为从 xt 输入数据的部分(tanh)
  • 两者相乘,表示有多少 xt 被输入进去

 

  • 左边为上面所说的 forget gate 与前一个 cell state (Ct1) 的乘积,表示保留的部分
  • 右边为 input gate 与输入的信息的乘积,表示输入的部分
  • 两者再相加,表示新的 cell state (Ct) 的结果

 

  • 一个 output gate 的 layer(sigmoid),用来计算多少部分可以被输出
  • 将前面算到的 cell state 做个 tanh 转黄,再与 output gate 的比例相乘
  • 最终输出结果为 ht

 gif

 

 

 

 

李宏毅老师推导过程(更好理解)

posted on   McDelfino  阅读(298)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2018-06-15 【318】C# 学习笔记
2016-06-15 【206】Firefox 扩展收集
点击右上角即可分享
微信分享提示