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














 
 
 

















 
 
 
 