網(wǎng)絡(luò)框架(TensorFlow vs PyTorch)與過擬合的完整解析)
generative-ai-for-beginners RAG 課程語料深讀神經(jīng)網(wǎng)絡(luò)框架TensorFlow vs PyTorch與過擬合的完整解析【免費(fèi)下載鏈接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners本篇以 generative-ai-for-beginners 倉庫中愛沙尼亞語et版第 15 課 RAG 與向量數(shù)據(jù)庫的語料文件frameworks.md為核心完整解讀其兩大技術(shù)主題神經(jīng)網(wǎng)絡(luò)框架的低層/高層 API 對比以及過擬合與偏差-方差權(quán)衡并結(jié)合該文件在倉庫配套 Notebook 中的真實(shí)用途說明它如何作為 RAG 檢索語料被切分、嵌入和查詢。讀完后你將掌握框架 API 選型的判斷依據(jù)、過擬合的識別與緩解手段以及該文檔在 RAG 演示流水線中的端到端角色。文檔在倉庫中的定位與角色frameworks.md位于愛沙尼亞語翻譯目錄下的第 15 課數(shù)據(jù)語料中翻譯版本文主體translations/et/15-rag-and-vector-databases/data/frameworks.md英文原版15-rag-and-vector-databases/data/frameworks.md同目錄語料own_framework.md多層感知機(jī)與自研框架、perceptron.md感知器從源碼結(jié)構(gòu)看這三個文件并非孤立的講義而是第 15 課 RAG 演示的核心知識庫。在 notebook-rag-vector-databases.ipynb 中data/frameworks.md、data/own_framework.md、data/perceptron.md被依次讀取構(gòu)建出含path與text兩列的 DataFrame隨后按max_length400, min_length300的字符閾值調(diào)用split_text切分成 chunk用嵌入模型環(huán)境變量AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT指定部署轉(zhuǎn)成向量最終通過NearestNeighbors(n_neighbors5, algorithmball_tree)建立近鄰索引實(shí)現(xiàn)用戶提問 → 向量檢索 → 將命中的 chunk 注入對話上下文的 RAG 閉環(huán)。因此本文所解析的每一段技術(shù)內(nèi)容都是該 RAG 應(yīng)用被檢索、被問答的最小語義單元之一。高效訓(xùn)練神經(jīng)網(wǎng)絡(luò)的兩項(xiàng)前提文檔開篇指出要高效訓(xùn)練神經(jīng)網(wǎng)絡(luò)必須同時解決兩件事對張量tensor做運(yùn)算乘法、加法以及計(jì)算 sigmoid、softmax 等函數(shù)計(jì)算所有表達(dá)式的梯度以便執(zhí)行梯度下降優(yōu)化。numpy可以完成第一點(diǎn)但梯度計(jì)算需要專門機(jī)制。文檔回顧了一個關(guān)鍵痛點(diǎn)在先前章節(jié)自研的迷你框架中所有導(dǎo)數(shù)函數(shù)都必須手工編寫進(jìn)執(zhí)行反向傳播的backward方法。理想中的框架應(yīng)當(dāng)能對任意可定義表達(dá)式自動求梯度——這正是自動微分autograd能力成為現(xiàn)代框架標(biāo)配的動機(jī)。第三項(xiàng)隱含前提是在 GPU 或其他專用計(jì)算單元如 TPU上執(zhí)行計(jì)算。深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練需要海量計(jì)算而這些計(jì)算能在 GPU 上并行parallelize即把計(jì)算分布到多個設(shè)備執(zhí)行至關(guān)重要。兩大主流框架低層 API 與高層 API 的對比文檔給出當(dāng)前最流行的兩個神經(jīng)網(wǎng)絡(luò)框架及其 API 分層層級TensorFlow 系PyTorch 系低層 APITensorFlowPyTorch高層 APIKerasPyTorch Lightning兩個框架的低層 API 都支持在 CPU 和 GPU 上操作張量高層 API 則構(gòu)建在低層 API 之上。二者的定位差異可概括為低層 API 構(gòu)建計(jì)算圖computational graph。該圖定義了給定輸入?yún)?shù)下如何計(jì)算輸出通常是損失函數(shù)并可整體推送到 GPU 上執(zhí)行??蚣芴峁τ?jì)算圖求導(dǎo)的函數(shù)算出的梯度隨即用于優(yōu)化模型參數(shù)。這種先定義完整計(jì)算、再求導(dǎo)執(zhí)行的模式給訓(xùn)練過程提供了細(xì)粒度控制。高層 API 把神經(jīng)網(wǎng)絡(luò)看作層的序列sequence of layers使絕大多數(shù)網(wǎng)絡(luò)的結(jié)構(gòu)搭建變得簡單。訓(xùn)練通常只需兩步準(zhǔn)備數(shù)據(jù)然后調(diào)用fit函數(shù)完成其余工作。取舍很清晰——高層 API 讓你不必糾結(jié)細(xì)節(jié)就能快速搭建典型網(wǎng)絡(luò)低層 API 則提供更強(qiáng)的控制力因此在探索新型網(wǎng)絡(luò)架構(gòu)的研究場景中被大量使用。兩者可以組合使用文檔特別強(qiáng)調(diào)這一點(diǎn)用低層 API 開發(fā)自己的網(wǎng)絡(luò)層架構(gòu)再把它嵌入由高層 API 構(gòu)建和訓(xùn)練的大網(wǎng)絡(luò)中或用高層 API 以層序列方式定義網(wǎng)絡(luò)再用自己的低層訓(xùn)練循環(huán)來執(zhí)行優(yōu)化。兩套 API 共享相同的基礎(chǔ)概念設(shè)計(jì)上就是配合工作的。關(guān)于學(xué)習(xí)路徑文檔給出的建議是課程多數(shù)內(nèi)容同時提供 PyTorch 和 TensorFlow 兩種 Notebook可任選一個框架學(xué)習(xí)若不確定選型可先閱讀社區(qū)中PyTorch vs TensorFlow的討論也可以兩個都看看加深理解。課程本身優(yōu)先使用高層 API 以保證簡潔但仍會從低層 API 和張量操作講起——如果想快速上手、不愿在這些細(xì)節(jié)上花時間可以直接跳到高層 API 的 Notebook。對應(yīng)到同目錄語料own_framework.md 展示了不用現(xiàn)成框架的另一條路徑從梯度下降的更新式w^(i1) w^(i) ? η·?L/?w出發(fā)推導(dǎo)多層感知機(jī)在鏈?zhǔn)椒▌t下的反向傳播梯度?L/?w? (?L/?σ)(?σ/?z?)(?z?/?w?)等解釋了為什么低層 API 值得理解。過擬合機(jī)器學(xué)習(xí)中最不能搞錯的概念文檔的第二大主題過擬合overfitting以一個對照實(shí)驗(yàn)引入對 5 個數(shù)據(jù)點(diǎn)圖中以x表示做近似擬合——線性模型2 個參數(shù)非線性模型7 個參數(shù)訓(xùn)練誤差 5.3訓(xùn)練誤差 0驗(yàn)證誤差 5.1驗(yàn)證誤差 20左側(cè)模型參數(shù)數(shù)量與數(shù)據(jù)規(guī)模相稱學(xué)到了點(diǎn)分布的本質(zhì)規(guī)律右側(cè)模型過強(qiáng)——僅 5 個點(diǎn)卻有 7 個參數(shù)它可以調(diào)整到穿過所有點(diǎn)使訓(xùn)練誤差歸零但這恰恰阻止了模型理解數(shù)據(jù)背后的真實(shí)模式導(dǎo)致驗(yàn)證誤差飆高。文檔的核心結(jié)論是模型豐富度參數(shù)量與訓(xùn)練樣本量之間的平衡至關(guān)重要。過擬合為什么會發(fā)生三個成因訓(xùn)練數(shù)據(jù)量不足模型過于強(qiáng)大輸入數(shù)據(jù)噪聲過大。如何檢測過擬合判據(jù)是訓(xùn)練誤差極低 驗(yàn)證誤差很高。典型訓(xùn)練曲線表現(xiàn)為訓(xùn)練誤差和驗(yàn)證誤差先同步下降隨后驗(yàn)證誤差停止下降轉(zhuǎn)為上升——這個拐點(diǎn)就是過擬合信號提示應(yīng)在此處停止訓(xùn)練至少保存一個模型快照。如何預(yù)防過擬合發(fā)現(xiàn)過擬合時可采取三招增加訓(xùn)練數(shù)據(jù)量降低模型復(fù)雜度使用正則化技術(shù)如后文會講的 Dropout。過擬合與偏差-方差權(quán)衡Bias-Variance Tradeoff文檔進(jìn)一步把過擬合歸入統(tǒng)計(jì)學(xué)中更一般的問題。模型的誤差來源有兩類偏差誤差bias errors算法無法正確捕捉訓(xùn)練數(shù)據(jù)中的真實(shí)關(guān)系所致往往源于模型不夠強(qiáng)即欠擬合underfitting方差誤差variance errors模型擬合了輸入數(shù)據(jù)的噪聲而非有意義的關(guān)系所致即過擬合。訓(xùn)練過程中偏差誤差持續(xù)下降模型學(xué)習(xí)近似數(shù)據(jù)方差誤差持續(xù)上升。因此必須適時停止訓(xùn)練——要么人工發(fā)現(xiàn)過擬合后手動停止要么通過引入正則化自動約束——以防過擬合。練習(xí)、挑戰(zhàn)與自研究問題文檔保留了完整的課程配套要素練習(xí)在配套 NotebookTensorFlowKeras / PyTorch及高層的 Keras / PyTorch Lightning中繼續(xù)框架學(xué)習(xí)挑戰(zhàn)完成各 Notebook 末尾的tasks任務(wù)自研究圍繞 TensorFlow、PyTorch、過擬合三個主題做調(diào)研并回答兩個自測問題——TensorFlow 與 PyTorch 的區(qū)別過擬合與欠擬合的區(qū)別作業(yè)用 PyTorch 或 TensorFlow 的單層與多層全連接網(wǎng)絡(luò)分別解決兩個分類問題。關(guān)于愛沙尼亞語版本的說明需要指出的是translations/et/15-rag-and-vector-databases/data/frameworks.md 末尾附有翻譯免責(zé)說明該文檔由 AI 翻譯服務(wù) Co-op Translator 生成可能含自動翻譯錯誤或偏差英文原版應(yīng)視為權(quán)威來源。因此涉及技術(shù)細(xì)節(jié)的嚴(yán)謹(jǐn)引用時建議以 15-rag-and-vector-databases/data/frameworks.md 為準(zhǔn)et 版可視為同一內(nèi)容在 RAG 多語言語料場景下的等價副本。小結(jié)與延伸閱讀這份語料文件濃縮了框架為什么存在自動梯度 并行計(jì)算→ 如何分層設(shè)計(jì)計(jì)算圖 vs 層序列→ 訓(xùn)練時最容易犯什么錯過擬合與偏差-方差權(quán)衡的完整認(rèn)知鏈條并在倉庫中承擔(dān) RAG 知識檢索的實(shí)際職能它被 notebook-rag-vector-databases.ipynb 切分、嵌入、索引成為第 15 課用自有筆記增強(qiáng) LLM場景詳見 translations/et/15-rag-and-vector-databases/README.md 與英文版 15-rag-and-vector-databases/README.md中可被問答的真實(shí)數(shù)據(jù)。想動手驗(yàn)證時可直接運(yùn)行該 Notebook需配置AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT等環(huán)境變量觀察what is a perceptron?這類問題如何命中data/perceptron.md的對應(yīng) chunk——這正是本文語料在向量檢索中的真實(shí)運(yùn)行方式?!久赓M(fèi)下載鏈接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考