2021-05-09 ch18 RNN

输入 x1 单词对应一个embedding,Ex1
输出 y' = [y1', y2', ...] (任务不同,使用的y不同:词性标注,每个y'都要;情感分类,仅需要最后一个yt')
隐层 h2 = tanh(w_h1*h1 + w_xh2 * Ex2 + b_l1)
y2' = g(w_hy2 * h2 + b_l2)
y2' 是 (0.01, 0.02, 0.001, ....) R|V|, 词库里每个单词的概率
groundtruth y2 = (0,0,1,...) R|V|, 表示x3这个词的独热编码
损失函数 l_t2 = loss(y2, y2')

需要学习的参数:{ W_xh, W_h, W_hy, b_ln, Ex}

image.png

语言模型回顾:P_lm(S) = P_lm(w1,w2,...,wn)

为什么RNN会出现梯度爆炸或者消失的问题?
1.RNN是深度学习模型,在时间维度上的叠加,和普通的NN堆叠不一样。当然也可以在空间上堆叠多层

梯度消失和梯度爆炸

LSTM

  • 参考https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21
    LSTM内部结构

    LSTM是用来解决RNN的梯度问题,起到了有效缓解作用
    LSTM比RNN多出了几个门,用来控制信息的流动
    LSTM的效率要比RNN低,毕竟计算上多出了更多步骤
    LSTM能比RNN捕获更长的依赖关系
    FAQ
    1.为什么门控(遗忘门、输入门、输出门)用sigmoid做激活函数,而求值(ct~, ht)是用tanh做激活函数?
    答:该问题分为3个子问题回答。
    1)为什么因为门控和求值用不同的激活函数?因为门是控制开闭的,全开时值为0,全闭值为0。有开有闭时,值在0到1之间。
    对于求值时的激活函数,选取时我认为与深层网络中激活函数选取是一样的,没有行与不行,只有好与不好。
    2)为什么使用sigmoid函数与tanh函数这种“饱和函数”?LSTM应该需要饱和的门来记住或忘记信息,不饱和的门会使得过去和现在的记忆一直在叠加,造成记忆错乱。饱和门也就是说在输入达到一定值的情况下,输出就不会发生明显变化了。如果是用非饱和的激活图数,例如ReLU,那么将难以实现门控的效果。
    3)为什么使用sigmoid函数与tanh函数?
    关键点:归一化,0中心;收敛快
    使用tanh函数生成候选记忆,是因为其输出在-1-1之间,这与大多数场景下特征分布是0中心的吻合。此外,tanh函数在输入为0近相比 sigmoid函数有更大的梯度,通常使模型收敛更快。使用sigmoid函数,一是由于门控需要0-1的值域,二是经验习得。
"""
LSTM伪代码
"""
def LSTMCell(x, h, c):
    data = concat(h,x)
    # 遗忘门
    forget_gate = sigmoid(W_f · data + b_f)
    # 输入门
    input_gate = sigmoid(W_i · data + b_i)
    # 输出门
    output_gate = sigmoid(W_o · data + b_o)
    # 生成候选记忆
    c_t~ = tanh(W_c  · data + b_c)
    # 生成当前记忆
    c_t = forget_gate · c_t-1 + input_gate · c_t~
    #  输出
    ht = output_gate · tanh(c_t)
    return ct, ht

image.png

image.png

情感分类代码


网络定义
image.png

depth(num_layers) 指的是多层LSTM,一般只有一层。


LSTM API结构

关于h0 c0初始化:

image.png
调用示例

一般翻译的话用 output,分类用hn

image.png

self.decoder 是一个二分类,单向LSTM的话,需要*2,是因为二分类
from_pretrained(), 用一个已经训练好的weight
require_grad = False, weight不需要梯度下降来更新
permute ,维度调换
初始状态和最终状态concate 是因为是双向LSTM

导入初始weight
训练过程1

训练过程2

扩展API


image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容