使用和學(xué)習(xí)人工智能堆棧的lm驅(qū)動(dòng)產(chǎn)品,建立AI膳食計(jì)劃,第3部分,創(chuàng)建數(shù)據(jù)集并進(jìn)行實(shí)踐
現(xiàn)在我們準(zhǔn)備開(kāi)始收集數(shù)據(jù)了!但是我們有一些選擇,我們必須決定前進(jìn)的道路。基本上,我們可以有兩種方法來(lái)收集數(shù)據(jù):使用現(xiàn)有數(shù)據(jù)或創(chuàng)建新數(shù)據(jù)。
利用現(xiàn)有數(shù)據(jù)
·
從相關(guān)社區(qū)或內(nèi)部來(lái)源收集第一方數(shù)據(jù)。
·
o 調(diào)查、內(nèi)部數(shù)據(jù)來(lái)源和眾包可以用來(lái)收集第一方的數(shù)據(jù)。
o 專(zhuān)業(yè)知識(shí) 當(dāng)前位置這可能是你最接近的"地面真相"數(shù)據(jù),從而是你可能收集到的最高質(zhì)量的數(shù)據(jù)。
o 債權(quán)人 :除非您已經(jīng)可以訪(fǎng)問(wèn)數(shù)據(jù)集,否則以這種方式構(gòu)建新的數(shù)據(jù)集可能是緩慢和耗時(shí)的。如果您的數(shù)據(jù)集中有可識(shí)別的個(gè)人信息,您還需要建立保證,以確保您的數(shù)據(jù)提供者的隱私不受損害。
·
從公共數(shù)據(jù)集、數(shù)據(jù)提供者.
·
o 現(xiàn)有的數(shù)據(jù)集可以在網(wǎng)上找到,從數(shù)據(jù)經(jīng)紀(jì)人那里購(gòu)買(mǎi),或者直接從網(wǎng)絡(luò)上刮走,可以成為利用已經(jīng)收集的數(shù)據(jù)的強(qiáng)大方式。
o 專(zhuān)業(yè)知識(shí) :這個(gè)方法可以是收集大量和多樣化的真實(shí)數(shù)據(jù)的一個(gè)很好的方法。
o 債權(quán)人 :在使用第三方數(shù)據(jù)集時(shí),可能難以確保個(gè)人隱私。此外,一些數(shù)據(jù)收集方法,如網(wǎng)絡(luò)收集,可能會(huì)違反一些網(wǎng)站的服務(wù)條款。
創(chuàng)建新數(shù)據(jù)
人類(lèi)生成的
顯然,您可以編寫(xiě)自己的提示/響應(yīng)演示來(lái)培訓(xùn)模型。為了擴(kuò)大規(guī)模,您甚至可以與數(shù)據(jù)公司合作(例如:?涌動(dòng) ,?比例尺 )以規(guī)模制作人為數(shù)據(jù)。
· 專(zhuān)業(yè)知識(shí) :人類(lèi)的判斷對(duì)于確保生成的數(shù)據(jù)有意義和有用是有用的。
· 債權(quán)人 :讓人類(lèi)編寫(xiě)數(shù)據(jù)可能成本高昂,時(shí)間很長(zhǎng)。加上各種層次的質(zhì)量控制,人類(lèi)數(shù)據(jù)就會(huì)變成一個(gè)復(fù)雜的操作。
合成生成的
您還可以簡(jiǎn)單地請(qǐng)求一個(gè)LLM為您生成數(shù)據(jù)。
· 專(zhuān)業(yè): 這是一種可以很快擴(kuò)展到大量數(shù)據(jù)集的廉價(jià)方法。
· 債權(quán)人 :模型無(wú)法超越自身的性能,所以通常合成數(shù)據(jù)只會(huì)導(dǎo)致模型回歸到均值。雖然可以通過(guò)測(cè)試不同的數(shù)據(jù)生成步驟模型來(lái)解決這一問(wèn)題,但它也可以在數(shù)據(jù)集中引入幻覺(jué)和錯(cuò)誤,這對(duì)人類(lèi)來(lái)說(shuō)很容易發(fā)現(xiàn),但對(duì)LLM來(lái)說(shuō)卻很難捕捉到。
混合體
一個(gè)強(qiáng)大的技術(shù)是通過(guò)讓人類(lèi)和模型連續(xù)地重寫(xiě)彼此的輸入來(lái)結(jié)合人類(lèi)和合成數(shù)據(jù)的生成。
· 專(zhuān)業(yè)知識(shí) :最好的人類(lèi)和LLM一代。可能會(huì)超過(guò)模型。
· 債權(quán)人 當(dāng)前位置雖然這是一個(gè)很好的妥協(xié),但它仍然需要相當(dāng)多的復(fù)雜性和努力來(lái)糾正。
為你的項(xiàng)目選擇正確的方法
選擇最佳數(shù)據(jù)生成方法取決于各種因素:
· 項(xiàng)目范圍和時(shí)間表
· 現(xiàn)有資源(預(yù)算、人力、現(xiàn)有數(shù)據(jù))
· 所需數(shù)據(jù)質(zhì)量和具體性
· 隱私和法律考慮
對(duì)于我們的膳食計(jì)劃?rùn)C(jī)器人,我們選擇合成數(shù)據(jù)生成。這一選擇使我們能夠:
1. 快速生成一個(gè)大的、不同的數(shù)據(jù)集
2. 保持對(duì)數(shù)據(jù)分布和邊緣案例的控制
3. 避免與真實(shí)用戶(hù)數(shù)據(jù)有關(guān)的潛在隱私問(wèn)題
然而,請(qǐng)記住,在生產(chǎn)環(huán)境中,將合成數(shù)據(jù)與經(jīng)過(guò)仔細(xì)審查的實(shí)際實(shí)例相結(jié)合的混合方法往往會(huì)產(chǎn)生最佳結(jié)果。
在我們的情況下,我們將創(chuàng)建合成數(shù)據(jù)。雖然混合方法在這里會(huì)很好地發(fā)揮作用,但為了本教程的目的,我們希望保持流程簡(jiǎn)單而又便宜,這樣您就可以獲得建立模型的知識(shí)和信心。
生成合成數(shù)據(jù)
合成數(shù)據(jù)生成 在人工智能領(lǐng)域,它變得越來(lái)越重要,因?yàn)樗试S開(kāi)發(fā)人員創(chuàng)建大型的、多樣化的數(shù)據(jù)集,根據(jù)他們的具體用例定制。通過(guò)生成合成示例,我們可以擴(kuò)展我們的培訓(xùn)數(shù)據(jù),涵蓋更廣泛的場(chǎng)景,并最終提高我們?nèi)斯ぶ悄苣P偷男阅?。例?國(guó)家衛(wèi)生研究院與該行業(yè)合作,創(chuàng)建了對(duì)場(chǎng)景規(guī)劃和其他目的有用的"19號(hào)數(shù)據(jù)集"。
在人工智能膳食計(jì)劃中,合成數(shù)據(jù)生成使我們能夠根據(jù)各種用戶(hù)屬性和偏好創(chuàng)建個(gè)性化膳食計(jì)劃。通過(guò)構(gòu)造一組規(guī)則和模板,我們可以生成模擬模型在實(shí)際使用中將遇到的數(shù)據(jù)類(lèi)型的實(shí)際例子。
一種流行的合成數(shù)據(jù)生成方法叫做"基于規(guī)則的生成"。"這個(gè)方法包括創(chuàng)建一個(gè)結(jié)構(gòu)化提示符,概述所需數(shù)據(jù)的上下文、輸入?yún)?shù)、輸出格式和示例。讓我們打破構(gòu)建這樣一個(gè)提示的過(guò)程:
· 背景: 首先,明確描述這個(gè)任務(wù)和模型應(yīng)該扮演的角色。在我們的案例中,我們希望模型作為專(zhuān)家營(yíng)養(yǎng)師創(chuàng)造個(gè)性化的膳食計(jì)劃。
· 輸入?yún)?shù) :指定模型生成膳食計(jì)劃時(shí)應(yīng)考慮的用戶(hù)屬性和偏好。這可以包括年齡、身高、體重、活動(dòng)水平、飲食限制和個(gè)人目標(biāo)。
· 產(chǎn)出格式 :為生成的膳食計(jì)劃確定一個(gè)一致的結(jié)構(gòu),包括大量營(yíng)養(yǎng)素(碳水化合物、蛋白質(zhì)、脂肪)的分解、食物類(lèi)型以及每頓飯和零食的數(shù)量。
· 例子 :提供一些符合指定格式和限制的膳食計(jì)劃的典型例子。這些示例作為模型生成新數(shù)據(jù)點(diǎn)時(shí)的模板。
下面是一個(gè)包含這些要素的提示的例子:
普通文本
You are an expert dietician. You prepare detailed meal plans for individuals customized based on their age, weight, activity level and a number of other attributes to optimize their health.
Below, I've provided you with the attributes of a specific user, please generate a meal plan for Breakfast, Lunch, Dinner, and 2 snacks. For each meal, use the following format:
Carbs (what type and how much)
Chicken/Fish/Meat (what type and how much)
Whey Protein (how much)
Veggies (what type and how much)
Oil/Fat (how much)
Include a calculation of total calories per meal, and for the whole day and include that in your response. Do not include any additional information.
{User Attributes}
通過(guò)向語(yǔ)言模型提供這個(gè)結(jié)構(gòu)化提示符,我們可以通過(guò)改變用戶(hù)屬性生成多個(gè)膳食計(jì)劃示例。這使我們能夠創(chuàng)建涵蓋廣泛的用戶(hù)檔案和偏好的多樣化數(shù)據(jù)集。
然而,驗(yàn)證生成的數(shù)據(jù)以確保其準(zhǔn)確性和適當(dāng)性是至關(guān)重要的。涉及領(lǐng)域?qū)<?如營(yíng)養(yǎng)學(xué)家或營(yíng)養(yǎng)學(xué)家,可以幫助識(shí)別任何不一致,偏見(jiàn),或不現(xiàn)實(shí)的例子。他們可以提供寶貴的反饋,以完善及時(shí)生成的膳食計(jì)劃和提高質(zhì)量。
讓我們?cè)谀P蜕蠝y(cè)試這個(gè)提示符。使用下列用戶(hù)屬性:
· Age: 25
· 身高:160厘米
· 體重:55公斤
· 活動(dòng)水平:不詳
· 膳食限制:不詳
· 個(gè)人偏好/目標(biāo):他們希望保持自己的體重,保持22%的脂肪比例。
我們得到以下答復(fù):
普通文本
Breakfast (400 calories)
Carbs: 50g (1 cup oatmeal)
Chicken/Fish/Meat: None
Whey Protein: 30g
Veggies: 1 cup mixed berries
Oil/Fat: 10g (2 tsp almond butter)
Lunch (450 calories)
Carbs: 60g (1 cup cooked quinoa)
Chicken/Fish/Meat: 120g grilled chicken breast
Whey Protein: None
Veggies: 2 cups mixed greens salad with cucumber, tomatoes
Oil/Fat: 15g (1 tbsp olive oil dressing)
Dinner (550 calories)
Carbs: 70g (1 medium baked sweet potato)
Chicken/Fish/Meat: 150g baked salmon
Whey Protein: None
Veggies: 2 cups steamed broccoli
Oil/Fat: 20g (1 tbsp olive oil + 1/4 avocado)
Snack 1 (150 calories)
Carbs: 20g (1 medium apple)
Chicken/Fish/Meat: None
Whey Protein: None
Veggies: None
Oil/Fat: 10g (2 tbsp peanut butter)
Snack 2 (200 calories)
Carbs: 25g (1 cup nonfat Greek yogurt)
Chicken/Fish/Meat: None
Whey Protein: None
Veggies: None
Oil/Fat: 5g (a small handful of almonds)
Total Daily Calories: 1750
看上去棒極了!遵循了格式,響應(yīng)看起來(lái)合理。現(xiàn)場(chǎng)檢查一些食物,熱量的計(jì)數(shù)似乎是檢查出來(lái)的。在這個(gè)階段,重要的是重復(fù)檢查這些值是否準(zhǔn)確,也許甚至與領(lǐng)域?qū)<?在我們的案例中是營(yíng)養(yǎng)學(xué)家或營(yíng)養(yǎng)學(xué)家)核實(shí)這些結(jié)果。
現(xiàn)在,您可能想知道,為什么我們需要生成數(shù)據(jù),而模型已經(jīng)非常擅長(zhǎng)處理這個(gè)用例?是的!這個(gè)模型似乎能夠處理這個(gè)用例。然而,讓我們通過(guò)增加一個(gè)"不要乏味的食物"的個(gè)人偏好來(lái)使它更加復(fù)雜:
普通文本
Breakfast (350 calories)
Carbs: 1 cup oatmeal (50g)
Chicken/Fish/Meat: 1/2 cup scrambled eggs (2 eggs)
Whey Protein: 1 scoop (25g)
Veggies: 1/2 cup spinach (20g)
Oil/Fat: 1 tsp olive oil (5g)
Lunch (400 calories)
Carbs: 1 cup quinoa (40g)
Chicken/Fish/Meat: 4 oz grilled chicken breast (115g)
Whey Protein: N/A
Veggies: 1 cup mixed greens (30g), 1/2 cup cherry tomatoes (50g), 1/4 cup cucumber (25g)
Oil/Fat: 1 tbsp olive oil (15g)
Snack 1 (150 calories)
Carbs: 1/2 cup fruit salad (100g)
Chicken/Fish/Meat: N/A
Whey Protein: N/A
Veggies: N/A
Oil/Fat: N/A
Snack 2 (200 calories)
Carbs: 1/4 cup trail mix (50g)
Chicken/Fish/Meat: N/A
Whey Protein: N/A
Veggies: N/A
Oil/Fat: N/A
Dinner (500 calories)
Carbs: 1 cup brown rice (50g)
Chicken/Fish/Meat: 4 oz grilled turkey breast (115g)
Whey Protein: N/A
Veggies: 1 cup broccoli (100g), 1/2 cup bell peppers (50g)
Oil/Fat: 1 tbsp olive oil (15g)
Total Daily Calories: 1600 calories
嗯。.這種反應(yīng)不如第一個(gè)反應(yīng)那么強(qiáng)烈。我們?cè)绮统噪u蛋,午餐吃雞胸肉等等。我們可以使用這個(gè)示例和其他具有挑戰(zhàn)性的場(chǎng)景來(lái)構(gòu)建我們的數(shù)據(jù)集。舉個(gè)例子,讓我們?yōu)樗鎏砣の?
普通文本
Breakfast (350 calories)
Carbs: 1 cup cassava (50g)
Chicken/Fish/Meat: 1/2 cup (80g) Scrambled Eggs with 1/2 cup chopped spinach
Whey Protein: 1 scoop (25g)
Veggies: 1/2 cup spinach (20g)
Oil/Fat: 1 tsp olive oil (5g)
Lunch (400 calories)
Carbs: 1 cup quinoa (40g)
Chicken/Fish/Meat: 4 oz (115g) Ground Turkey (can be seasoned and formed into patties)
Whey Protein: N/A
Veggies: 1 cup mixed greens (30g), 1/2 cup cherry tomatoes (50g), 1/4 cup cucumber (25g)
Oil/Fat: 1 tbsp olive oil (15g)
Snack 1 (150 calories)
Carbs: 1/2 cup fruit salad (100g)
Chicken/Fish/Meat: N/A
Whey Protein: N/A
Veggies: N/A
Oil/Fat: N/A
Snack 2 (200 calories)
Carbs: 1/2 cup Mango cubes (75g)
Chicken/Fish/Meat: N/A
Whey Protein: N/A
Veggies: N/A
Oil/Fat: N/A
Dinner (500 calories)
Carbs: 1 cup brown rice (50g)
Chicken/Fish/Meat: 4 oz (115g) Tofu (can be pan-fried or baked)
Whey Protein: N/A
Veggies: 1 cup broccoli (100g), 1/2 cup bell peppers (50g)
Oil/Fat: 1 tbsp olive oil (15g)
Total Daily Calories: 1600 calories
太好了-好多了,更有趣一點(diǎn)!
當(dāng)您構(gòu)建數(shù)據(jù)集時(shí),您可能會(huì)發(fā)現(xiàn)您的模型同樣有能力。但是,當(dāng)你繼續(xù)測(cè)試不同的場(chǎng)景時(shí),你肯定會(huì)發(fā)現(xiàn)一些邊緣案例,在這些案例中,模型會(huì)遇到困難,你可以幫助它更好地執(zhí)行。
現(xiàn)在有了很多例子,我們可以開(kāi)始準(zhǔn)備數(shù)據(jù)了。然而,在這樣做之前,我們需要為每個(gè)用戶(hù)場(chǎng)景構(gòu)造一個(gè)提示符。如上所述,我們只是將一些用戶(hù)屬性注入到我們的提示符中,但是為了使它更現(xiàn)實(shí),我們需要將其構(gòu)造成如下句子:
I'm 25, female, about 160cm and 120 pounds. I want to stay the same at around 22% BF.
就這樣!現(xiàn)在我們有數(shù)據(jù)集了。讓我們轉(zhuǎn)向谷歌的床單,開(kāi)始為訓(xùn)練做好準(zhǔn)備。
培訓(xùn)數(shù)據(jù)
準(zhǔn)確的數(shù)據(jù)編制步驟可能取決于若干因素,但將數(shù)據(jù)放在一種易于廣泛受眾審查和操縱的形式中通常是有益的。由于大多數(shù)人都很熟悉谷歌的電子表格軟件,比如谷歌的表格軟件是這方面的一個(gè)自然選擇,它也很適合審查個(gè)人的"記錄"或者培訓(xùn)數(shù)據(jù)的"例子"。
設(shè)置數(shù)據(jù)非常簡(jiǎn)單。首先,我們需要兩列:"提示"和"響應(yīng)"。"每一行應(yīng)根據(jù)我們先前構(gòu)建的數(shù)據(jù)集,在這些列中包含各自的值?,F(xiàn)在我們有了它,現(xiàn)在是清理數(shù)據(jù)的好時(shí)機(jī)。
數(shù)據(jù)清理
在我們準(zhǔn)備好訓(xùn)練數(shù)據(jù)之前,我們需要?確保沒(méi)有不準(zhǔn)確之處 ,不一致,錯(cuò)誤,以及其他可能妨礙我們最終目標(biāo)的問(wèn)題。
有幾個(gè)關(guān)鍵的注意事項(xiàng):
缺失價(jià)值
您的數(shù)據(jù)集是完整的還是缺少字段的例子?您需要決定是否要完全刪除這些示例,或者是否要嘗試填寫(xiě)它們(也稱(chēng)為歸罪)。
格式問(wèn)題
文本大寫(xiě)是否恰當(dāng)?值是否在正確的單位?是否存在一些結(jié)構(gòu)性問(wèn)題,如不匹配的括號(hào)?需要解決所有這些問(wèn)題,以確保一致性。
異常、無(wú)關(guān)和不準(zhǔn)確的數(shù)據(jù)
是否有任何數(shù)據(jù)遠(yuǎn)遠(yuǎn)超出規(guī)范,可能誤導(dǎo)模型?應(yīng)刪除這些數(shù)據(jù)。另外,注意任何與你的用例無(wú)關(guān)的數(shù)據(jù),并刪除它。與領(lǐng)域?qū)<液献骺梢允且环N過(guò)濾不屬于的數(shù)據(jù)集的有效策略。
通過(guò)仔細(xì)清理和預(yù)處理你的數(shù)據(jù),你正在為自己成功地訓(xùn)練一個(gè)高性能的模型。這也許不是這個(gè)過(guò)程中最具魅力的部分,但這是絕對(duì)必要的。目前階段的時(shí)間投資對(duì)于生產(chǎn)級(jí)模型至關(guān)重要,并將使以后的步驟容易得多。
數(shù)據(jù)清理的其他最佳做法
· 盡可能自動(dòng)化 :使用自動(dòng)化工具和腳本來(lái)處理重復(fù)性任務(wù),如格式標(biāo)準(zhǔn)化和缺失的價(jià)值估算。
· 重復(fù)和驗(yàn)證 *數(shù)據(jù)清理不是一次性任務(wù)。不斷迭代和驗(yàn)證您的清理方法,以確保持續(xù)的數(shù)據(jù)質(zhì)量。
· 把一切都記錄下來(lái) :保存所有數(shù)據(jù)清理步驟的詳細(xì)文件,包括所作的決定和所使用的方法。這將有助于調(diào)試和完善您的流程。
· 利用領(lǐng)域知識(shí) :與領(lǐng)域?qū)<液献?以確保您的數(shù)據(jù)清理過(guò)程符合現(xiàn)實(shí)世界的需求和細(xì)微差別。