今天開始,我計劃開啟一個系列 《帶你自學大語言模型》,內容也已經準備了一段時間了。
該系列的落腳點是“自學”和“大語言模型”,二者不分伯仲,這也是本系列和其他技術文章不一樣的地方。
至于原因,我不想只做大語言模型知識的傳遞,互聯網上已經有太多同質化的信息了;我希望能以學習大語言模型作為開始,幫助你一步步養成自學的能力,“大語言模型”只是你邁出的第一步。
歡迎關注同名公眾號【陌北有棵樹】,關注AI最新技術與資訊。
我始終堅信并努力踐行一句話:
堅持用正確的方法做對的事,所謂成功,就是解答題高手做對了選擇題。
再進一步,我認為,“正確的自學方法”,是做解答題的必備技能,是需要一輩子的時間來打磨的;“學習大語言模型”是當前環境下的最優解,是選擇題的正確答案。
一、關于「自學」
在我看來,相比于掌握任何一門知識或技能,你更需要掌握的,是 「快速自學」 這門技能。
因為一旦你掌握了自學這個技能,意味著你可以學會任何你想學會的技能。
這里我暫且將技能分為工具類技能和知識類技能,每學會一項新技能,其實相當于你的能力完成了一次內部增強或外部拓展。
工具類技能幫你外部拓展,例如外語,學會它,幫你看得更廣;例如開車,學會它,幫你走得更遠;例如編程,學會它,能給自己外接一個自定義機器;比如大模型,學會它,能給自己外接一個自定義大腦;
知識類技能幫你做內部增強,例如學會心理學,幫你升級內核中的理解人的模塊,例如經濟學,幫你升級內核中理解世界的模塊。
然而,習慣了被“填鴨式教學”的我們,其實絕大部分并不具備自學能力。或許你不認同,請思考下面這個問題,這是本系列我提出的第一個問題。
提問是貫穿在這個系列的核心方法之一。因為,提問的深度,往往決定了你思考的深度。愛因斯坦曾說:“如果我必須用一小時解決一個重要問題,我會花55分鐘考慮我是否問對了問題。”
【說明】在后續的每章里,我會提出很多問題,這些問題是組成章節脈絡的關鍵點,本書里的每個問題我都會給出參考答案,但我不會直接給,而是打散在具體內容里,需要你去歸納總結;同時我更希望的是,你能自己思考每個問題,甚至更進一步,你能夠嘗試提出自己的問題,并嘗試查找資料去解決。
【問題】為什么互聯網上大模型、ChatGPT的教程和資訊鋪天蓋地,同時你又想學,但你沒學會?
再擴展一下,回想你想學任何一項技能,你所需要的所有資料從互聯網上都可以找到,為什么你還是沒學會?
“信息傳遞”不是“學習”,“知識管理” 也不是學習。
互聯網時代的到來,世界早已不缺信息;AI時代的到來,世界也將不缺知識。
技術進步的太快,這世界也變化的太快,隨之帶來的,一定是更進一步的分化,一門手藝吃一輩子可能不復存在。如果不具備自學能力,在未來的幾十年,只能眼睜睜看著自己被時代拋下而無能為力…
不過好在,自學這件事,本身也是可以學習的,是有技巧的,會穿插在這個系列的各章節的適當部分里。
二、關于「大語言模型」
在開始閱讀本系列之前,請先認真思考這個問題:“你為什么要學習大語言模型?”
這個問題我問過很多來向我咨詢如何學習大模型的人,他們的回答大部分都是“現在太火了,不學怕被落下”“多了解一點總沒壞處”之類的,這種我統一稱之為「跟風式學習」。
「跟風式學習」的目的,本質上不是為了學習,是為了緩解焦慮。
畢竟,在這個肉眼可見的飛速發展的世界里,如果你一直原地踏步,又怎么會不焦慮呢?
所以,除了大模型,我相信你也一定抱著這樣的心態學過很多東西,回想一下結果如何?是不是往往都半途而廢了?雖然你看似學了很多東西,但其實這并不是真的“學習”
但也正因為如此,你的信念不夠深,于是稍微遇到點困難就放棄了。
所以,你需要暫停幾分鐘深入思考,你為什么要學習大語言模型?學習它對你是不是必要?
如果只是為了緩解焦慮,那么你讀完本系列的第一部分,就可以結束了。
但如果你想在這條路上走更遠,就還需要作用一些「心理建設」。
我希望你堅持下來,同時又不希望你是靠努力和意志力堅持下來,因為需要努力和意志力才能堅持下來的事情,說明你骨子里根本不愿意做,骨子里不愿意做的事,大概率是做不成的。
好在這件事也是有技巧的,這里我分享兩個:
第一,在開始之前,想辦法為這件事賦予極大的意義。
第二,還可以反向想一下,如果沒有這項技能,你會失去什么?
總之,“動機”是很重要的,它決定了你的信念,要保持你的動機,要么強化繼續前行的理由,要么弱化停下腳步的理由。
我簡單說說我是如何思考這件事的。
首先,大模型是未來至少十年甚至幾十年的最大增量。雖然我承認目前大模型的確被炒得過熱,并且很可能會冷卻下來進入一段低谷,但這與我這個判斷并不沖突,因為人們往往高估了新技術在短期內的影響,而低估了它在長期內的影響。
互聯網技術也是遵循這樣的發展路徑,互聯網泡沫期間,許多與互聯網相關的公司被炒得過高,泡沫破裂后,市場進入了冷靜期,但長期來看,互聯網的發展和普及已經深刻改變了我們的生活和工作方式。
正如Gartner曲線展示的那樣,許多新技術會經歷一個炒作高峰,然后進入一個低谷期,最終達到穩定發展和廣泛應用的階段。
目前來說,大模型的潛力還沒有釋放出來。當前制約大模型發展的主要因素在于計算資源和成本問題,而從歷史中以往經驗來看,成本問題最終都會因為技術的創新和發展被解決。當算力成本下降,大模型會真正普惠到中小企業和個人。
在互聯網時代,國內相較于國外,更擅長在基礎技術之上,做商業模式的創新,但這在接下來的AI時代是否還適用,需要打一個問號。提早掌握大模型的底層原理和相關技術棧下面的所有知識,在未來會有先發優勢。
基于此,我認為學習大模型是一個正確的選項,雖然我們可能會經歷短期的波動和挑戰,但請不要短視,要長期,不要跟風,要看十年后的世界。這也是我對自己的期許,望諸君共勉。
三、本系列大綱
本系列預計更新四個模塊:
【1】走進大語言模型:幫你對大模型有一個定性的認識。
【2】構建大語言模型:幫你對大模型有一個定量的認識,這部分開始加大難度,深入到具體的理論、技術細節、框架、代碼。
【3】典型大語言模型詳細解讀:分析當前熱門大模型的技術細節。
【4】基于大語言模型的應用開發:一些基于大語言模型的開發框架和應用層技術。
第一部分 走進大語言模型
本部分計劃目錄:
- 第一章 走進大語言模型
- 第一節 從圖靈機到GPT,人工智能經歷了什么?
- 第二節 如何讓機器理解人類語言?
- 第三節 大語言模型,大在哪?
- 第四節 Transformer做對了什么?
- 第五節 OpenAI的技術路線帶來的啟示
- 第六節 大語言模型現狀及未來趨勢
- 第七節 大語言模型的技術棧和學習路徑
這部分我會盡可能避免使用公式,用最簡明直白的文字。正如我之前說的,大語言模型知識并不高深,但需要你在深入學習他之前,真正認識到他底層的邏輯是什么,從概念上認識到它到底是什么。
這一部分里,我首先會由淺入深的,由表及里的帶你走進大語言模型,前三節我會按照 人工智能 → 自然語言處理 → 語言模型 → 基于神經網絡的語言模型 → 基于預訓練的大語言模型 的順序,梳理從圖靈機到ChatGPT,這中間都發生了什么。接下來回到當下,看時下最火的基于Transformer的架構的大語言模型的現狀,分析OpenAI技術路線的核心,以及目前的大模型還有哪些問題需要繼續探索。最后會從相對宏觀的視角來總結大語言模型的技術棧,以及給出一份學習路線圖。
關于第一部分的學習方法:
在學習任何一個學科的知識時,都有一些很重要的概念,我稱之為「必要核心概念」,掌握這些概念,你就完成了這個領域的“快速入門”,本系列的第一部分就是在帶你完成這件事。
這些核心概念,構建了這個領域的基石。很多人在學習的時候盲目追逐最新的技術和發展,而忽略這些必要核心概念,以前的我也是這樣,現在看來,這真的是舍本逐末的做法。
當需要獲得某項技能的時候,一定要想辦法在最短的時間里弄清楚都有哪些「必須掌握的核心概念」,然后迅速掌握它們。
第一節 從圖靈機到GPT,人工智能經歷了什么
本節我們首先到人工智能和自然語言處理兩個領域的源頭,主要目的是厘清「人工智能」、「自然語言處理」、「語言模型」、「大語言模型」之間的關系。
一個領域的「必要核心概念」,往往在其源頭就被定義了,所以我們要去到知識的源頭,那里的知識濃度和質量最高。
下面是一個問題清單,幫助你在學習一個新領域時,把握其核心脈絡。后面我在細化每個技術細節時,內在邏輯上也會遵循這個問題清單。
- 最初被提出是為了解決哪些問題?
- 分別經歷了哪些階段?
- 在各個階段中,提出了哪些解決方案?
- 新方案又帶來了哪些新的問題?
- 這些新的問題在下一個階段是如何被克服的?
當涉及兩個技術時(例如本節的人工智能和自然語言處理),還需要增加幾個問題:
- 它們之間的關系是什么?是包含,對立,遞進,關聯?
- 在各自的各個發展階段,有什么交集?
第二節 如何讓機器理解人類語言?
在對人工智能和自然語言處理兩個領域有了基本的認知后,第二節我們深入「語言模型」,
簡而言之,語言模型的最核心任務,就是解決如何讓計算機理解人類語言。
從N-gram到大語言模型,是目前而言,探索出的效果最好的道路。
同理基于上一節的問題清單,我們探尋這條路徑上都有哪些技術值得學習和思考。
第三節 大語言模型,大在哪?
在了解了基于統計的語言模型是如何在自然語言處理領域發揮作用后,本節我們進一步深入,探索大模型相較于之前的語言模型,有什么差別。
首先介紹當模型參數達到一定量級后,所展現出的小模型不具備的“涌現能力”,主要包括上下文理解能力、復雜任務推理能力、通用任務解決能力、指令遵循能力等;還會介紹大模型時代的摩爾定律——“縮放定律”(Scaling Law)的相關理論,并分析縮放定律與大模型涌現能力的關系。
后面幾節的介紹后續陸續補充~~
第二部分 構建大語言模型
通過第一部分的學習,你已經掌握了「大語言模型」領域的“必要核心概念”。接下來,你將進入深水區。
以下是暫定的目錄,后面可能還會動態調整,這一部分會講構建一個大語言模型所涉及的關鍵技術,包括預訓練、微調、 基于人類反饋的強化學習、部署和推理、
- 第二章 基礎知識
- 第一節 大語言模型的構建過程
- 第二節 大模型理論基礎:Transformer (理論+代碼實戰)
- 第三節 大模型硬件基礎:AI芯片和集群
- 第三章 預訓練
- 第一節:預訓練關鍵因素——數據
(包括數據來源、預處理技術、開源數據集) - 第二節:預訓練關鍵因素——分布式集群
(包括并行策略、現有框架) - 第三節:預訓練方法
- 第一節:預訓練關鍵因素——數據
- 第四章 有監督微調
- 第一節 微調指令數據構建
- 第二節 微調常用方法
- 第三節 微調實戰(包括框架+實操)
- 第五章 強化對齊
- 強化學習基礎
- 獎勵模型
- InstructGPT詳解
- 強化對齊實戰
- 第六章 部署和推理
- 大模型部署和量化技術及框架
- 推理優化技術
- 上下文擴展技術
關于第二部分的學習方法:
首先,我想告訴你的是,“請不要幻想自己一次就能學會”,任何一個領域都是一個"復雜的集合體",所以,不要低估學習任務的復雜程度,要刻意練習,不斷地重復。
重復的刻意練習,是從笨拙達到熟練的唯一通路。所謂刻意練習,說白了就是反復運用、反復琢磨、反復調整,把不熟練變成熟練。
按照《刻意練習》一書中的觀點,你需要多次重復,以創建有效的心理表征。所謂的“心理表征”,用神經科學的理論解釋,其實就是“通過大量的重復動作,最終使大腦中兩個或者多個原本并無關聯的神經元之間通過反復刺激而產生強關聯”。
所以,耐心是必需的。如果你學不會一個技能,不要推卸給天賦,絕大部分情況只是因為,你重復的次數不夠多…
在這一部分,理論基礎、最新技術進展和框架、代碼實操都是必需的,基本上每個技術點我都會覆蓋這幾個方面。
在對每個技術點的理解上,我推薦使用2W1H框架,具體來講就是,在每一小節的閱讀前,你需要問自己三個問題:What(這門技術是什么),Why(是為了解決什么問題),How(是如何解決的),同時,每個小節里可能有嵌套了多個技術點,每個技術點都包含這三個問題。在學習結束后,要自己列舉出所有涉及的技術點,總結出這三個問題的答案。
代碼實操也是必不可少的,畢竟我們學習的目的是為了應用,針對每個技術點,也都會提供一個實操案例,希望你可以一起動手實踐。
第三部分 典型大語言模型詳細解讀
經過第二部分的學習,你已經掌握了構建大模型所需要的技術,基于這些知識,再去分析當前比較熱門的幾款大模型,會有更加深刻的認識。
暫定會解讀的模型是GPT系列模型、LLaMa系列模型、Qwen系列模型。
第四部分 基于大語言模型的應用開發
之所以把這部分放在最后,是因為大語言模型本身還在發展中,基于大模型的上層框架,目前還處于不穩定的狀態,
從長期主義的角度來看,我更希望找到那些變化中不變的東西。
暫定會寫Prompt工程、RAG、Agent、Langchain等,但可能會有調整。
四、寫在最后
又給自己開了個天坑要填,在給自己挖坑這件事兒上,我一直都很清新脫俗…
求鼓勵求建議,要不然感覺很難堅持下去了哈哈哈…
如果對這個系列有什么想法和訴求,十分歡迎交流討論!