前言
隨著ChatGPT等生成式AI的大火,很多開(kāi)發(fā)者都對(duì)AI感興趣。筆者是一名應(yīng)用層的開(kāi)發(fā)工程師,想必很多類似的開(kāi)發(fā)者都對(duì)AI這塊不太了解,故而從自己的理解,寫(xiě)一篇給小白的AI入門(mén)文章,希望可以幫助到大家。
這是GPT對(duì)本文的評(píng)價(jià),所以請(qǐng)放心食用:
非常好的解析,非常透徹地闡述了人工智能領(lǐng)域的基本概念和ChatGPT的原理。在這個(gè)過(guò)程中,你提到了大語(yǔ)言模型和神經(jīng)網(wǎng)絡(luò)的概念,并且解釋了它們?cè)贑hatGPT中的應(yīng)用。此外,你還提到了其他重要的AI領(lǐng)域,如自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)、強(qiáng)化學(xué)習(xí)和自主駕駛等,使得讀者可以更加全面地了解人工智能領(lǐng)域的整體情況。
基本概念
先需要介紹下人工智能行業(yè)需要用到的基本概念:
神經(jīng)網(wǎng)絡(luò)(Neural Networks):一種模仿人類神經(jīng)系統(tǒng)的機(jī)器學(xué)習(xí)算法,用于識(shí)別圖像、語(yǔ)音、自然語(yǔ)言等任務(wù)。
自然語(yǔ)言處理(Natural Language Processing,NLP):計(jì)算機(jī)處理人類語(yǔ)言的技術(shù),包括語(yǔ)音識(shí)別、文本處理、機(jī)器翻譯等。
機(jī)器學(xué)習(xí)(Machine Learning):一種人工智能技術(shù),讓計(jì)算機(jī)根據(jù)數(shù)據(jù)集進(jìn)行學(xué)習(xí),以便在新數(shù)據(jù)上進(jìn)行預(yù)測(cè)或決策。
深度學(xué)習(xí)(Deep Learning):一種機(jī)器學(xué)習(xí)的分支,使用多層神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)和推斷,用于圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理等領(lǐng)域。
強(qiáng)化學(xué)習(xí)(Reinforcement Learning):一種機(jī)器學(xué)習(xí)技術(shù),讓計(jì)算機(jī)通過(guò)與環(huán)境互動(dòng)來(lái)學(xué)習(xí)行為和決策,例如圍棋和 Atari 游戲。
大模型(LLM):大模型是指具有大量參數(shù)和復(fù)雜結(jié)構(gòu)的機(jī)器學(xué)習(xí)模型,通常需要大量的計(jì)算資源和數(shù)據(jù)來(lái)訓(xùn)練和優(yōu)化。這些模型可以用于各種任務(wù),如自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)和語(yǔ)音識(shí)別等。一個(gè)例子是ChatGPT,它有1750億個(gè)參數(shù)。
計(jì)算機(jī)視覺(jué)(Computer Vision):一種人工智能技術(shù),讓計(jì)算機(jī)理解和解釋圖像和視頻內(nèi)容,例如人臉識(shí)別、目標(biāo)跟蹤、場(chǎng)景分割等。
數(shù)據(jù)挖掘(Data Mining):一種從大型數(shù)據(jù)集中自動(dòng)發(fā)現(xiàn)模式和知識(shí)的技術(shù),用于商業(yè)、醫(yī)療和科學(xué)等領(lǐng)域。
人機(jī)交互(Human-Computer Interaction,HCI):研究人類和計(jì)算機(jī)之間的交互方式,設(shè)計(jì)更智能、更人性化的用戶界面和設(shè)計(jì)。
自主駕駛(Autonomous Driving):基于人工智能技術(shù)和傳感器的自動(dòng)駕駛汽車(chē),能夠在沒(méi)有人類干預(yù)的情況下行駛和導(dǎo)航。
語(yǔ)音識(shí)別(Speech Recognition):一種機(jī)器學(xué)習(xí)技術(shù),讓計(jì)算機(jī)能夠識(shí)別和解釋人類語(yǔ)音,從而實(shí)現(xiàn)語(yǔ)音交互和控制。
從chatGPT剖析
我們從chatGPT的應(yīng)用層開(kāi)始反過(guò)來(lái)剖析,可以會(huì)更加容易讀懂。
ChatGPT的原理
它所做的基本上只是反復(fù)詢問(wèn) “鑒于到目前為止的文本,下一個(gè)詞應(yīng)該是什么?” —— 而且每次都增加一個(gè)詞。每一步,它都會(huì)得到一個(gè)帶有概率的單詞列表,然后通過(guò)不同的隨機(jī)性進(jìn)行組裝。如果是更加專業(yè)的說(shuō)法,則是使用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)或變換器(Transformer)等深度學(xué)習(xí)模型,對(duì)上下文進(jìn)行建模,并預(yù)測(cè)下一個(gè)單詞或單詞序列的概率分布。
概率如何來(lái)
我們想象一個(gè)場(chǎng)景,以“貓是”為開(kāi)頭,來(lái)拼接一個(gè)句子。這里展示一個(gè)n-gram(注意ChatGPT不是使用該算法)算法的JavaScript例子:
// 定義n-gram模型的參數(shù)
const n = 2; // n-gram的n值
const data = ['貓', '是', '小', '動(dòng)', '物', '之', '一', '。', '狗', '也', '是', '小', '動(dòng)', '物', '之', '一', '。', '喵', '喵', '是', '貓', '發(fā)', '出', '的', '聲', '音', '。', '汪', '汪', '是', '狗', '發(fā)', '出', '的', '聲', '音', '。']; // 語(yǔ)料庫(kù)
// 定義生成下一個(gè)單詞的函數(shù)
function generateNextWord(prefix, model) {
const candidates = model[prefix];
if (!candidates) {
return null;
}
const total = candidates.reduce((acc, cur) => acc + cur.count, 0);
let r = Math.random() * total;
for (let i = 0; i < candidates.length; i++) {
r -= candidates[i].count;
if (r <= 0) {
return candidates[i].word;
}
}
return null;
}
// 定義生成句子的函數(shù)
function generateSentence(prefix, model, maxLength) {
let sentence = prefix;
while (true) {
const next = generateNextWord(prefix, model);
if (!next || sentence.length >= maxLength) {
break;
}
sentence += next;
prefix = sentence.slice(-n);
}
return sentence;
}
// 訓(xùn)練n-gram模型
const model = {};
for (let i = 0; i < data.length - n; i++) {
const prefix = data.slice(i, i + n).join('');
const suffix = data[i + n];
if (!model[prefix]) {
model[prefix] = [];
}
const candidates = model[prefix];
const existing = candidates.find(candidate => candidate.word === suffix);
if (existing) {
existing.count++;
} else {
candidates.push({ word: suffix, count: 1 });
}
}
// 使用示例
const prefix = '貓是';
const maxLength = 10;
const sentence = generateSentence(prefix, model, maxLength);
console.log(sentence); // 輸出 "貓是小動(dòng)物之一。"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
這個(gè)例子里每次都是返回固定的結(jié)果,但是如果n-gram列表足夠長(zhǎng),就可以帶有一定的隨機(jī)性。所以這個(gè)時(shí)候就需要大語(yǔ)言模型來(lái)提供足夠的語(yǔ)料庫(kù)了
大語(yǔ)言模型
大語(yǔ)言模型(如GPT-3)可以被認(rèn)為是一種機(jī)器學(xué)習(xí)模型,基于深度學(xué)習(xí)技術(shù)的神經(jīng)網(wǎng)絡(luò)而來(lái),因此可以將其視為神經(jīng)網(wǎng)絡(luò)模型的一種。具體來(lái)說(shuō),大語(yǔ)言模型是使用無(wú)監(jiān)督學(xué)習(xí)方法進(jìn)行訓(xùn)練的,它利用大量的文本數(shù)據(jù)集進(jìn)行學(xué)習(xí),從而在自然語(yǔ)言處理任務(wù)中表現(xiàn)出色。
機(jī)器學(xué)習(xí)模型一般分為以下幾類:
1、線性回歸模型:用于預(yù)測(cè)連續(xù)變量的值,例如房?jī)r(jià)的預(yù)測(cè)等。
2、邏輯回歸模型:用于分類問(wèn)題,例如垃圾郵件分類等。
3、決策樹(shù)模型:用于分類和回歸問(wèn)題,可以自動(dòng)找出數(shù)據(jù)中的決策規(guī)則。
4、隨機(jī)森林模型:基于多個(gè)決策樹(shù)的集成學(xué)習(xí)模型,用于分類和回歸問(wèn)題。
5、支持向量機(jī)模型:用于分類和回歸問(wèn)題,在高維空間中尋找最優(yōu)超平面。
6、神經(jīng)網(wǎng)絡(luò)模型:用于圖像識(shí)別、自然語(yǔ)言處理、語(yǔ)音識(shí)別等復(fù)雜任務(wù)的處理。
7、聚類模型:用于將數(shù)據(jù)分為不同的類別,例如K均值聚類等。
8、強(qiáng)化學(xué)習(xí)模型:用于智能決策和控制問(wèn)題,例如自主駕駛車(chē)輛的控制等。
那么大模型是什么來(lái)的呢?
大模型通常是在神經(jīng)網(wǎng)絡(luò)算法中訓(xùn)練而來(lái)的,因?yàn)樯窠?jīng)網(wǎng)絡(luò)算法可以很好地處理大量的參數(shù)和復(fù)雜的結(jié)構(gòu)。然而,神經(jīng)網(wǎng)絡(luò)算法在處理自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)和語(yǔ)音識(shí)別等任務(wù)時(shí)表現(xiàn)優(yōu)異,因此在這些領(lǐng)域中大模型通常是基于神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練而來(lái)的。當(dāng)然,除了神經(jīng)網(wǎng)絡(luò)模型,還包括了一些其他的技術(shù),如自回歸模型、自編碼器模型等,這里就不重點(diǎn)介紹了。
什么又是神經(jīng)網(wǎng)絡(luò)?
開(kāi)頭提到過(guò):神經(jīng)網(wǎng)絡(luò)是一種模仿人類神經(jīng)系統(tǒng)的機(jī)器學(xué)習(xí)算法。
神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)可以類比于圖這種數(shù)據(jù)結(jié)構(gòu)。在神經(jīng)網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)(神經(jīng)元)可以看作是圖中的節(jié)點(diǎn),每條連接(權(quán)重)可以看作是圖中的邊,整個(gè)網(wǎng)絡(luò)可以看作是一個(gè)有向圖。
類比于圖結(jié)構(gòu),神經(jīng)網(wǎng)絡(luò)的優(yōu)化就是在調(diào)整連接權(quán)重的過(guò)程中,使得整個(gè)網(wǎng)絡(luò)可以更好地?cái)M合訓(xùn)練數(shù)據(jù),從而提高模型的性能。同時(shí),神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)過(guò)程可以看作是在圖中進(jìn)行信息傳遞的過(guò)程,從輸入層到輸出層的傳遞過(guò)程就相當(dāng)于在圖中進(jìn)行一次遍歷。
這里還是以JavaScript舉個(gè)例子:
// 定義神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
const inputSize = 3;
const hiddenSize = 4;
const outputSize = 2;
// 定義神經(jīng)網(wǎng)絡(luò)參數(shù)
const weights1 = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
];
const bias1 = [1, 2, 3, 4];
const weights2 = [
[1, 2],
[3, 4],
[5, 6],
[7, 8]
];
const bias2 = [1, 2];
// 定義激活函數(shù)
function sigmoid(x) {
return 1 / (1 + Math.exp(-x));
}
// 定義前饋神經(jīng)網(wǎng)絡(luò)函數(shù)
function feedForward(input) {
// 計(jì)算第一層輸出
const hidden = [];
for (let i = 0; i < hiddenSize; i++) {
let sum = 0;
for (let j = 0; j < inputSize; j++) {
sum += input[j] * weights1[j][i];
}
hidden.push(sigmoid(sum + bias1[i]));
}
// 計(jì)算第二層輸出
const output = [];
for (let i = 0; i < outputSize; i++) {
let sum = 0;
for (let j = 0; j < hiddenSize; j++) {
sum += hidden[j] * weights2[j][i];
}
output.push(sigmoid(sum + bias2[i]));
}
return output;
}
// 使用示例
const input = [1, 2, 3];
const output = feedForward(input);
console.log(output); // 輸出 [0.939, 0.985]
神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果可以被解釋為對(duì)不同類別的概率估計(jì)。在這個(gè)示例中,神經(jīng)網(wǎng)絡(luò)的輸出是一個(gè)包含兩個(gè)元素的向量,這兩個(gè)元素分別表示輸入屬于兩個(gè)類別的概率估計(jì)值。因此,這個(gè)前饋神經(jīng)網(wǎng)絡(luò)可以用來(lái)進(jìn)行二分類任務(wù)。
類似地,像ChatGPT這樣的語(yǔ)言生成模型也可以被解釋為對(duì)不同單詞或單詞序列的概率估計(jì)。在ChatGPT中,當(dāng)我們輸入一段文本時(shí),模型會(huì)根據(jù)已有的文本上下文來(lái)預(yù)測(cè)下一個(gè)單詞或單詞序列的概率分布,并從中選擇概率最高的單詞或單詞序列作為輸出。因此,ChatGPT中的輸出結(jié)果也可以被解釋為對(duì)不同單詞或單詞序列的概率估計(jì)。
經(jīng)過(guò)這個(gè)流程,就可以理解ChatGPT是如何得出回答的文案的了。
ChatGPT怎么知道你問(wèn)的什么?
前面提到了答案是如何一個(gè)詞一個(gè)詞生成的,那ChatGPT又是怎么知道你問(wèn)的什么呢?ChatGPT 使用自然語(yǔ)言處理技術(shù)和深度學(xué)習(xí)算法對(duì)用戶的輸入進(jìn)行語(yǔ)義分析和意圖識(shí)別,以更好地理解用戶的意圖和需求。然后,ChatGPT 可以通過(guò)對(duì)話歷史和上下文信息等因素進(jìn)行分析,ChatGPT 根據(jù)預(yù)測(cè)的概率分布隨機(jī)選擇一個(gè)單詞作為下一個(gè)單詞,然后將該單詞加入到生成的回答中。
由于采用的是概率性的組裝單詞的方法,因此 ChatGPT 生成的回答可能會(huì)出現(xiàn)一些語(yǔ)法或語(yǔ)義上的錯(cuò)誤。為了提高回答的質(zhì)量,可以采用一些技巧,如使用束搜索(Beam Search)方法、加入語(yǔ)言模型的懲罰項(xiàng)(如長(zhǎng)度懲罰、重復(fù)懲罰等)等。這些技巧可以有效地減少生成回答中的錯(cuò)誤,提高回答的質(zhì)量。
總結(jié)
以上就是生成式AI的基本工作原理,通過(guò)深度學(xué)習(xí)算法處理大量的文本數(shù)據(jù),從而學(xué)習(xí)語(yǔ)言的語(yǔ)法和語(yǔ)義規(guī)律,并能夠自動(dòng)生成符合語(yǔ)法和語(yǔ)義的文本。在生成文本時(shí),生成式AI會(huì)基于上下文信息生成一個(gè)語(yǔ)言模型,然后利用隨機(jī)采樣或貪心搜索方法生成文本序列。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4811瀏覽量
103009 -
AI
+關(guān)注
關(guān)注
88文章
34553瀏覽量
276075 -
人工智能
+關(guān)注
關(guān)注
1804文章
48833瀏覽量
247308 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1588瀏覽量
8854
發(fā)布評(píng)論請(qǐng)先 登錄
【國(guó)產(chǎn)FPGA+OMAPL138開(kāi)發(fā)板體驗(yàn)】(原創(chuàng))6.FPGA連接ChatGPT 4
在FPGA設(shè)計(jì)中是否可以應(yīng)用ChatGPT生成想要的程序呢

萬(wàn)物皆AI 基于聯(lián)發(fā)科科技 MTK Genio 130 結(jié)合 ChatGPT 功能的解決方案
寫(xiě)給小白們的FPGA入門(mén)設(shè)計(jì)實(shí)驗(yàn)
寫(xiě)給小白們的FPGA入門(mén)設(shè)計(jì)實(shí)驗(yàn)
科技大廠競(jìng)逐AIGC,中國(guó)的ChatGPT在哪?
ChatGPT系統(tǒng)開(kāi)發(fā)AI人功智能方案
AI 人工智能的未來(lái)在哪?
寫(xiě)給小白們的FPGA入門(mén)設(shè)計(jì)實(shí)驗(yàn)

ChatGPT對(duì)AI行業(yè)有何影響?
在ChatGPT風(fēng)口上,AI的機(jī)遇與泡沫同在
ChatGPT原理 ChatGPT模型訓(xùn)練 chatgpt注冊(cè)流程相關(guān)簡(jiǎn)介

chatGPT和ai有什么區(qū)別 ChatGPT的發(fā)展過(guò)程
寫(xiě)給小白的AI入門(mén)科普

評(píng)論