我們一起聊聊如何給AI大模型喂數據?
大家好呀,我是飛魚。
如果我想要大模型學習我的知識,怎么給他數據呢?
數據是大模型的食物,只有喂對了,模型才能更好地學習和成長。
這里介紹大模型優化的三種方式:長文本提示,RAG,微調。
長文本提示
比如我們上傳一篇文章,發給大模型讓他總結一下里面的內容,這個就是長文本提示。
我們上傳的這篇文章,跟我們的提示詞拼接后,會一起發給大模型。
這個長文本數據,它只能在你的這個對話窗口內有效,而且還不能超過它模型本身支持的上下文長度。
在問答系統、內容創作等任務中,提示詞可以顯著提升模型的表現。
RAG(檢索增強生成)
RAG 就是我們經常聽到的知識庫。
這個知識庫就好比我們寫論文的時候,在圖書館里有一大堆書,當你開始寫某個主題的時候。
- 你才會根據你的需要去把那些相關的書籍段落都找出來參考和引用。
RAG 的知識庫數據就是單獨放在外面,提什么問你就去搜什么數據,跟我們寫論文很像。
在問答系統中,RAG可以利用最新的數據和信息來生成更準確的答案,彌補大模型在知識更新方面的不足。
微調(Fine-Tuning)
其實微調中的數據才是直接給大模型喂進去。
微調大模型是把你喂進去的數據消化成了規律,固定在它的參數里。
其實在微調之前,真正做大模型的廠商已經做過了一步,叫做預訓練。
- 這一步用了大量的算力數據讓他有了基礎知識。
微調它是把接收到的信息壓縮成了一種規律,把它記住。
- 那以后能沿著這個規律去做推測。
當需要模型在特定領域或任務中表現更佳時,微調是理想的選擇。
- 例如,在醫學領域,通過微調可以讓模型更好地理解和生成醫學文本。
總結:大模型的學習方式就像選課,文本提示是旁聽,RAG是圖書館查資料,微調是請家教。
每日一題
題目描述
給你一個二叉搜索樹的根節點 root ,返回 樹中任意兩不同節點值之間的最小差值 。
差值是一個正數,其數值等于兩值之差的絕對值。
解題思路
中序遍歷 目標二叉搜索樹,每輪計算相鄰節點的差值,并取最小。
在二叉搜索樹中,左 < 根 < 右。
因此,最小差值,一定是相鄰兩個節點的差值。
而 中序遍歷,則保證了 上一輪遍歷的根 與 當前遍歷的根 相鄰(為父子關系)。
代碼實現
Java代碼:
class Solution {
private int preNodeValue = -1;
private int result = Integer.MAX_VALUE;
public int getMinimumDifference(TreeNode root) {
inorder(root);
return this.result;
}
private void inorder(TreeNode root) {
if (root == null) {
return;
}
inorder(root.left);
if (this.preNodeValue != -1) {
// 因為是 二叉搜索樹,且為 中序遍歷
// 因此 左 > 根 > 右,(root.val - this.preNodeValue) 必為正值
this.result = Integer.min(root.val - this.preNodeValue, this.result);
}
this.preNodeValue = root.val;
inorder(root.right);
}
}