《AI時代:碼農的涅盤重生》第64章 NLP的興趣(1)

作者:Flint8·1小時前

窗外,鵬城的初春來得猝不及防。昨天還穿著薄外套,今天林晨只穿了件短袖坐在電腦前,仍覺得後背微微發汗。書房的空調他捨不得開太久——失業這幾個月,每一度電都得精打細算。

他正在整理昨晚Kaggle競賽的筆記。螢幕上密密麻麻的記錄:特徵工程的視覺化方法、LightGBXGBoost的整合技巧、如何利用交叉驗證防止過擬合……這些從其他參賽者公開程式碼裡“偷師”來的乾貨,比任何付費課程都實在。

“排名2187,共4896人”。林晨看著最終成績,嘴角卻帶著笑意。若是十年前剛畢業那會兒,他大概會為這個中下游的排名沮喪。但現在,三十五歲的他更明白什麼才是真正的收穫——那些沉澱在腦子裡的方法論,遠比一個虛擬的排名數字有價值。

整理到一半,瀏覽器標籤頁裡一篇技術部落格吸引了他的注意。標題是《從RNN到Transforr:NLP是如何被徹底改變的》。作者用生動的比喻解釋了注意力機制:“就像你讀一篇長文,不會平均用力看每個字,而是自動聚焦到關鍵句子。Transforr讓機器學會了這種‘聚焦’能力”。

林晨滑動滑鼠,目光停留在幾個關鍵詞上:BERT、GPT、預訓練、微調。

他隱約記得,之前面試某家Web3公司時,技術總監隨口提過一句:“我們正在嘗試用BERT做智慧合約的漏洞檢測”。當時他對NLP(自然語言處理)還停留在“分詞、詞向量”的淺層認知,沒太在意。

但現在不一樣了。經過幾個月的系統學習,林晨對AI的認知維度正在快速拓寬。他意識到,如果自己的“晨曦一號”投資系統只分析數字(股價、成交量、技術指標),那就像只用一隻眼睛看世界。

“市場情緒呢”?林晨靠在椅背上,自言自語,“政策公告、財報解讀、行業新聞、社交媒體上的熱議……這些文字資訊裡,藏著多少數字無法直接表達的訊號”?

這個念頭一旦升起,就像種子落入溼潤的土壤,迅速生根發芽。

他立刻行動。先是花了兩個小時,在Coursera上找到一門斯坦福大學的《自然語言處理與深度學習》公開課,加入學習列表。接著,在知乎、掘金等技術社群搜尋“Transforr入門實戰”,收藏了十幾篇高贊教程。

最讓他興奮的是,在Hugging Face官網上,他發現了一個名為“del Hub”的寶藏庫。

“這太不可思議了……”林晨滾動著頁面,眼睛發亮。

BERT-base-chinese、GPT-2、T5、RoBERTa……一個個預訓練好的模型像貨架上的商品一樣陳列著,大部分只需幾行程式碼就能呼叫。更關鍵的是,這些模型大多開源,允許微調以適應特定任務。

“也就是說,我不需要從零開始訓練一個理解中文的巨型模型——那是需要海量資料和算力,只有大廠才玩得起的遊戲”。林晨快速思考著,“我只需要在這些已經具備強大語言理解能力的‘大腦’基礎上,用我自己的資料(比如財經新聞、股評)對它進行‘專項培訓’,它就能學會針對金融文字的分析能力”。

這個認知讓他心跳加速。這意味著門檻的極大降低,意味著個人開發者也有機會利用最前沿的NLP技術。

接下來的三天,林晨進入了新一輪的沉浸式學習。

第一天,他主攻Transforr架構。那篇著名的論文《Attention Is All You Need》他打印出來,對照著中文解讀,啃了三遍。自注意力機制(Self-Attention)、位置編碼(Positional Encoding)、前饋網路(Feed-Forward)……一個個模組在他腦中逐漸清晰。他畫了無數張草圖,嘗試理解輸入一個句子“今天股價大漲”時,模型內部是如何計算每個詞與其他詞的相關性權重的。

“難怪能解決長距離依賴問題”。林晨在筆記上寫道,“RNN像接力賽,資訊傳遞遠了會衰減;Transforr讓每個詞都能直接‘看到’句子裡的所有其他詞,一舉解決了瓶頸”。

第二天,他深入研究BERT(Bidirectional Encoder Representations froTransforrs)。這個名字直譯過來是“來自Transforr的雙向編碼器表示”。雙向(Bidirectional)是它的精髓——傳統語言模型只能從左到右或從右到左單向預測,BERT卻能同時考慮上下文,從而獲得更深層的語義理解。

“sked Language del(掩碼語言模型)和Next Sentence Prediction(下一句預測)”。林晨總結著它的兩個預訓練任務,“透過讓模型預測被隨機掩蓋的詞,以及判斷兩個句子是否連續,它學會了詞語之間的關係和句子間的邏輯。這就像讓一個孩子透過完形填空和組句遊戲來掌握語言”。

第三天,他轉向GPT(Generative Pre-trained Transforr)。與BERT的“理解”取向不同,GPT更擅長“生成”。它的訓練方式是給定上文,預測下一個詞。這種自迴歸(Auto-regressive)方式讓它能寫出連貫的文字。林晨在本地跑了一個小型的GPT-2 de,輸入“央行今日宣佈”,模型輸出了“降準0.5個百分點,釋放長期資金約1.2萬億元……”雖然內容純屬虛構,但格式和語氣竟有模有樣。

“一個擅長理解,一個擅長生成”。林晨對比著,“對於投資分析,目前更需要的是理解能力,從文字中提取情感傾向、關鍵事件、風險提示。所以BERT路線可能更合適”。

理論學習必須用實踐鞏固。林晨決定動手微調一個模型試試。

他在Hugging Face上選擇了bert-base-chinese,這是一個通用的中文BERT模型。任務設定為簡單的文字分類:判斷一段中文文字的情感是正面、負面還是中性。

資料從哪裡來?林晨想到了電商評論。他在網上找到了一個公開的中文電商評論資料集,包含數萬條使用者對商品的評價以及對應的情感標籤(1—5星,他將其歸為正面、中性、負面三類)。

接下來是程式碼時間。得益於Hugging Face的transforrs庫,流程被大大簡化。

frotransforrs iort BertTokenizer, BertForSequenceClassification

frotransforrs iort Trainer, TrainingArgunts

hcrot troi

tesatad_daol troi stesatadorf

詞分和料資載 #

)vsc.sweiver=selif_atad ,vsc(tesatad_daol = tesatad

)esenihc-esab-treb(deniarterporf.rezinekoTtreB = rezinekot

式函理預料資義定 #

:)selaxe(noitcnuf_ssecorperp fed

)821=htgnel_x ,htgnel_x=gniddap ,eurT=noitacnurt ,】txet【selaxe(rezinekot nruter

)eurT=dehctab ,noitcnuf_ssecorperp(p.tesatad = tesatad_dezinekot

數籤標類分定指,型模練訓預載 #

猜你喜歡

同題材或同分類的其他作品。