RNN模型及NLP應用(5/9)——多層RNN、雙向RNN、預訓練

聲明:

? ? ? ?本文基于嗶站博主【Shusenwang】的視頻課程【RNN模型及NLP應用】,結合自身的理解所作,旨在幫助大家了解學習NLP自然語言處理基礎知識。配合著視頻課程學習效果更佳。

材料來源:【Shusenwang】的視頻課程【RNN模型及NLP應用】

視頻鏈接:

RNN模型與NLP應用(5/9):多層RNN、雙向RNN、預訓練_嗶哩嗶哩_bilibili


一、學習目標

1.了解什么是多層RNN、雙向RNN、預訓練

2.學會代碼實現多層RNN、雙向RNN、預訓練

3.2.清楚這三種RNN模型的底層邏輯


?二、多層RNN、雙向RNN、預訓練

1.多層RNN

將RNN堆疊起來構成深度RNN神經網絡,以下為示意圖:

神經網絡每一步都會更新狀態h,每一個狀態向量h都有兩個copies,一個輸出,一個用來傳給下一節點。這一層輸出的h,用于上一層的輸入。以此類推,第二層的狀態向量一個用來傳給下一個時間點,另一個用來作為第三層的輸入。

最后一層的ht是最終的輸出。


代碼實現:

? ? ? ?上圖中紅色方框標記處:用了三個LSTM層,第一層return_sequence=true,第一層LSTM的輸出需要作為第二層的輸入;第二層return_sequence=true,第二層LSTM的輸出需要作為第三層的輸入,而第三層return_sequence=flase,第三層LSTM的輸出為最終輸出。


2.雙向RNN

訓練兩條RNN,一條從左往右輸出,一條從右往左輸出。

同一個輸入X同時輸給兩條RNN,兩條RNN互相獨立,互不影響。

如果有多條RNN,那么將最上面的內一行的y作為輸入再傳給下一條RNN。

最后只取左右兩邊的ht和ht',如下圖:

代碼實現:

要實現雙向RNN,則需要導入Bidirectional層,然后在標準的LSTM外套一個Bidirectional層即可


3.預訓練

預訓練在深度學習中非常常用,比如在訓練卷積神經網絡中,如果網絡足夠大,但數據集不夠大,

這時候你就可以在Imagenet(大規模的注釋圖像數據庫)上做預訓練,這樣可以讓神經網絡有更好的初始化,也可以避免overfitting(過擬合)

訓練RNN的時候也是這個道理

? ? ? ?如上圖所示,這個RNN模型的embedding層有320000個參數,那么在數據集很小的情況下,該模型很可能會產生過擬合。

那么RNN預訓練具體是這么做的:

? ? 【首先】要找到一個足夠大的數據集,可以是情感芬妮下的數據集,也可以是其他類型的數據,但是任務最好是接近原來情感分析的任務,最好是學出來的詞向量帶有正面或負面的情感詞。兩個任務越相似,預訓練出來的transform(表現)就會越好。這個神經網絡的結構是什么樣的都可以,只要他有embedding層就行。

? ? ?【其次】就是要在大數據集上訓練這個神經網絡,訓練好后把上面的層丟掉,只保留eembedding層和訓練好的模型參數

【最后】再搭建我們自己的RNN模型

? ? ? ?新的RNN層和全連接層的參數都是隨機初始化的,而下面的embedding層是預訓練出來的,要把embedding層固定住,不要訓練embedding層


三、總結

①能用SimpleRNN的情況下,肯定可以用LSTM,LSTM的效果要比Simple RNN好,因此我們應該都用LSTM

②提升RNN效果的方式之一就是使用雙向RNN,雙向RNN比單向的訓練效果好。

③多層RNN的容量比單層大,如果訓練數據比較多,那么多層的RNN訓練效果比單層的好

④RNN的embedding層中參數往往都很多,那么在數據集較小的情況下,訓練可能會出現over fitting(過擬合),因為我們就需要在大數據集上先進行預訓練。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76435.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【3.軟件工程】3.4 原型及相關模型

軟件開發模型進化論:從原型驅動到混合模型的完整指南 🔄 一、模型進化關系全景圖 #mermaid-svg-GcOFjt54gUs4oPeu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GcOFjt54gUs4oPeu .error-i…

硬件與軟件的邊界-從單片機到linux的問答詳解

硬件與軟件的邊界——從單片機到 Linux 設備驅動的問答詳解 在嵌入式開發和操作系統領域,經常會有人問: “如果一個設備里沒有任何代碼,硬件是不是依然會工作?例如,數據收發、寄存器數據存儲、甚至中斷觸發&#xff…

瑪卡巴卡的k8s知識點問答題(七)

25. 說明 Job 與 CronJob 的功能 Job 功能: 用于運行一次性任務(批處理任務),確保一個或多個 Pod 成功完成任務后退出。 適用于數據處理、備份、測試等場景,任務完成后 Pod 不會自動重啟。 特點: 任務…

【NLP 51、一些LLM模型結構上的變化】

目錄 一、multi-head 共享 二、attention結構 1.傳統的Tranformer結構 2.GPTJ —— 平行放置的Transformer結構 三、歸一化層位置的選擇 1.Post LN: 2.Pre-LN【目前主流】: 3.Sandwich-LN: 四、歸一化函數選擇 1.傳統的歸一化函數 LayerNorm …

VS+Qt配置QtXlsx庫實現execl文件導入導出(全教程)

一、配置QtXlsx 1.1 下載解壓QtXlsxWriter(在github下載即可) 網址:https://github.com/dbzhang800/QtXlsxWriter 1.2 使用qt運行 點擊qtxlsx.pro運行QtXlsxWriter 選擇DesktopQt51211MSVC201564bit編譯器(選擇自己本地電腦qt…

Golang的文件處理優化策略

Golang的文件處理優化策略 一、Golang的文件處理優化策略概述 是一門效率高、易于編程的編程語言,它的文件處理能力也非常強大。 在實際開發中,需要注意一些優化策略,以提高文件處理的效率和性能。 本文將介紹Golang中的文件處理優化策略&…

自學-C語言-基礎-數組、函數、指針、結構體和共同體、文件

這里寫自定義目錄標題 代碼環境:?問題思考:一、數組二、函數三、指針四、結構體和共同體五、文件問題答案: 代碼環境: Dev C ?問題思考: 把上門的字母與下面相同的字母相連,線不能…

VMware+Ubuntu+VScode+ROS一站式教學+常見問題解決

目錄 一.VMware的安裝 二.Ubuntu下載 1.前言 2.Ubuntu版本選擇 三.VMware中Ubuntu的安裝 四.Ubuntu系統基本設置 1.中文更改 2.中文輸入法更改 3. 輔助工具 vmware tools 五.VScode的安裝ros基本插件 1.安裝 2.ros輔助插件下載 六.ROS安裝 1.安裝ros 2.配置ROS…

PostgreSQL pg_repack 重新組織表并釋放表空間

pg_repack pg_repack是 PostgreSQL 的一個擴展,它允許您從表和索引中刪除膨脹,并可選擇恢復聚集索引的物理順序。與CLUSTER和VACUUM FULL不同,它可以在線工作,在處理過程中無需對已處理的表保持獨占鎖定。pg_repack 啟動效率高&a…

5G_WiFi_CE_射頻輸出功率、發射功率控制(TPC)和功率密度測試

目錄 一、規范要求 1、法規目錄: (1)RF Output Power (2)Transmit Power Control (TPC) (3)Power Density 2、限值: 二、EIRP測試方法 (1)測試條件 (2&#xff…

掃描線離散化線段樹解決矩形面積并-洛谷P5490

https://www.luogu.com.cn/problem/P5490 題目描述 求 n n n 個四邊平行于坐標軸的矩形的面積并。 輸入格式 第一行一個正整數 n n n。 接下來 n n n 行每行四個非負整數 x 1 , y 1 , x 2 , y 2 x_1, y_1, x_2, y_2 x1?,y1?,x2?,y2?,表示一個矩形的四個…

Java項目之基于ssm的簡易版營業廳寬帶系統(源碼+文檔)

項目簡介 簡易版營業廳寬帶系統實現了以下功能: 此營業廳寬帶系統利用當下成熟完善的SSM框架,使用跨平臺的可開發大型商業網站的Java語言,以及最受歡迎的RDBMS應用軟件之一的Mysql數據庫進行程序開發。實現了營業廳寬帶系統基礎數據的管理&…

從入門到入土,SQLServer 2022慢查詢問題總結

列為,由于公司原因,作者接觸了一個SQLServer 2022作為數據存儲到項目,可能是上一任的哥們兒離開的時候帶有情緒,所以現在項目的主要問題就是,所有功能都實現了,但是就是慢,列表頁3s打底,客戶很生氣,經過幾周摸爬滾打,作以下總結,作為自己的成長記錄。 一、索引問題…

PDF處理控件Aspose.PDF教程:在Python、Java 和 C# 中旋轉 PDF 文檔

您是否希望快速輕松地在線旋轉PDF文檔?無論您需要修復文檔的方向還是只想重新排列頁面,本指南都能滿足您的需求。有簡單的方法可以解決此問題 - 無論您喜歡在線工具還是編程解決方案。 在本指南中,我們將向您展示如何免費在線旋轉 PDF&#…

編譯原理:first集和follow

一、First 集(首符號集) 定義: 對于符號(非終結符或終結符)或符號串,First 集是該符號串能夠推導出的所有可能開頭的終結符的集合。若符號串可以推導出空串(ε),則 ε 也…

python實現簡單fast-cgi服務,對接到nginx

python代碼 import socket import struct import threading# FastCGI 頭格式(8 字節) FCGI_HEADER_FORMAT "!BBHHBx" FCGI_VERSION 1 FCGI_TYPE_BEGIN_REQUEST 1 FCGI_TYPE_PARAMS 4 FCGI_TYPE_STDIN 5 FCGI_TYPE_STDOUT 6 FCGI_TYPE_E…

vue開始時間小于等于結束時間,且開始時間小于等于系統時間,時間格式:年月日時分

// 日期配置 export const DATA_CONFIGS [{itemKey: "startDate",startDateKey: "startDate",endDateKey: "endDate",isStart: true,},{itemKey: "endDate",startDateKey: "startDate",endDateKey: "endDate",is…

PyCharm 下載與安裝教程:從零開始搭建你的 Python 開發環境

PyCharm 是一款專為 Python 開發設計的集成開發環境(IDE),它提供了強大的代碼編輯、調試、版本控制等功能,是 Python 開發者的必備工具之一。如果你是初學者,或者正在尋找一款高效的開發工具,這篇文章將幫助…

Qt線程等待條件QWaitCondition

Qt 線程等待條件 概念 Qt提供了QWaitCondition類實現“等待條件”式的線程控制方法,它讓線程阻塞在等待條件的地方,直到條件滿足后才繼續執行下去。也就是說,QWaitCondition可以使一個線程在滿足一定條件時通知其他多個線程,使它…

RAG 和 RAGFlow 學習筆記

一、RAG(檢索增強生成) 1. RAG 的定義與核心思想 RAG(Retrieval-Augmented Generation,檢索增強生成) 是一種結合 信息檢索(Retrieval) 和 文本生成(Generation) 的技術…