前言
隨著ChatGPT等生成式AI的大火,很多開發者都對AI感興趣。筆者是一名應用層的開發工程師,想必很多類似的開發者都對AI這塊不太了解,故而從自己的理解,寫一篇給小白的AI入門文章,希望可以幫助到大家。
這是GPT對本文的評價,所以請放心食用:
非常好的解析,非常透徹地闡述了人工智能領域的基本概念和ChatGPT的原理。在這個過程中,你提到了大語言模型和神經網絡的概念,并且解釋了它們在ChatGPT中的應用。此外,你還提到了其他重要的AI領域,如自然語言處理、計算機視覺、強化學習和自主駕駛等,使得讀者可以更加全面地了解人工智能領域的整體情況。
基本概念
先需要介紹下人工智能行業需要用到的基本概念:
神經網絡(Neural Networks):一種模仿人類神經系統的機器學習算法,用于識別圖像、語音、自然語言等任務。
自然語言處理(Natural Language Processing,NLP):計算機處理人類語言的技術,包括語音識別、文本處理、機器翻譯等。
機器學習(Machine Learning):一種人工智能技術,讓計算機根據數據集進行學習,以便在新數據上進行預測或決策。
深度學習(Deep Learning):一種機器學習的分支,使用多層神經網絡進行學習和推斷,用于圖像識別、語音識別、自然語言處理等領域。
強化學習(Reinforcement Learning):一種機器學習技術,讓計算機通過與環境互動來學習行為和決策,例如圍棋和 Atari 游戲。
大模型(LLM):大模型是指具有大量參數和復雜結構的機器學習模型,通常需要大量的計算資源和數據來訓練和優化。這些模型可以用于各種任務,如自然語言處理、計算機視覺和語音識別等。一個例子是ChatGPT,它有1750億個參數。
計算機視覺(Computer Vision):一種人工智能技術,讓計算機理解和解釋圖像和視頻內容,例如人臉識別、目標跟蹤、場景分割等。
數據挖掘(Data Mining):一種從大型數據集中自動發現模式和知識的技術,用于商業、醫療和科學等領域。
人機交互(Human-Computer Interaction,HCI):研究人類和計算機之間的交互方式,設計更智能、更人性化的用戶界面和設計。
自主駕駛(Autonomous Driving):基于人工智能技術和傳感器的自動駕駛汽車,能夠在沒有人類干預的情況下行駛和導航。
語音識別(Speech Recognition):一種機器學習技術,讓計算機能夠識別和解釋人類語音,從而實現語音交互和控制。
從chatGPT剖析
我們從chatGPT的應用層開始反過來剖析,可以會更加容易讀懂。
ChatGPT的原理
它所做的基本上只是反復詢問 “鑒于到目前為止的文本,下一個詞應該是什么?” —— 而且每次都增加一個詞。每一步,它都會得到一個帶有概率的單詞列表,然后通過不同的隨機性進行組裝。如果是更加專業的說法,則是使用長短時記憶網絡(LSTM)或變換器(Transformer)等深度學習模型,對上下文進行建模,并預測下一個單詞或單詞序列的概率分布。
概率如何來
我們想象一個場景,以“貓是”為開頭,來拼接一個句子。這里展示一個n-gram(注意ChatGPT不是使用該算法)算法的JavaScript例子:
// 定義n-gram模型的參數
const n = 2; // n-gram的n值
const data = ['貓', '是', '小', '動', '物', '之', '一', '。', '狗', '也', '是', '小', '動', '物', '之', '一', '。', '喵', '喵', '是', '貓', '發', '出', '的', '聲', '音', '。', '汪', '汪', '是', '狗', '發', '出', '的', '聲', '音', '。']; // 語料庫
// 定義生成下一個單詞的函數
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;
}
// 定義生成句子的函數
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;
}
// 訓練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); // 輸出 "貓是小動物之一。"
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
這個例子里每次都是返回固定的結果,但是如果n-gram列表足夠長,就可以帶有一定的隨機性。所以這個時候就需要大語言模型來提供足夠的語料庫了
大語言模型
大語言模型(如GPT-3)可以被認為是一種機器學習模型,基于深度學習技術的神經網絡而來,因此可以將其視為神經網絡模型的一種。具體來說,大語言模型是使用無監督學習方法進行訓練的,它利用大量的文本數據集進行學習,從而在自然語言處理任務中表現出色。
機器學習模型一般分為以下幾類:
1、線性回歸模型:用于預測連續變量的值,例如房價的預測等。
2、邏輯回歸模型:用于分類問題,例如垃圾郵件分類等。
3、決策樹模型:用于分類和回歸問題,可以自動找出數據中的決策規則。
4、隨機森林模型:基于多個決策樹的集成學習模型,用于分類和回歸問題。
5、支持向量機模型:用于分類和回歸問題,在高維空間中尋找最優超平面。
6、神經網絡模型:用于圖像識別、自然語言處理、語音識別等復雜任務的處理。
7、聚類模型:用于將數據分為不同的類別,例如K均值聚類等。
8、強化學習模型:用于智能決策和控制問題,例如自主駕駛車輛的控制等。
那么大模型是什么來的呢?
大模型通常是在神經網絡算法中訓練而來的,因為神經網絡算法可以很好地處理大量的參數和復雜的結構。然而,神經網絡算法在處理自然語言處理、計算機視覺和語音識別等任務時表現優異,因此在這些領域中大模型通常是基于神經網絡算法訓練而來的。當然,除了神經網絡模型,還包括了一些其他的技術,如自回歸模型、自編碼器模型等,這里就不重點介紹了。
什么又是神經網絡?
開頭提到過:神經網絡是一種模仿人類神經系統的機器學習算法。
神經網絡的結構可以類比于圖這種數據結構。在神經網絡中,每個節點(神經元)可以看作是圖中的節點,每條連接(權重)可以看作是圖中的邊,整個網絡可以看作是一個有向圖。
類比于圖結構,神經網絡的優化就是在調整連接權重的過程中,使得整個網絡可以更好地擬合訓練數據,從而提高模型的性能。同時,神經網絡的預測過程可以看作是在圖中進行信息傳遞的過程,從輸入層到輸出層的傳遞過程就相當于在圖中進行一次遍歷。
這里還是以JavaScript舉個例子:
// 定義神經網絡結構
const inputSize = 3;
const hiddenSize = 4;
const outputSize = 2;
// 定義神經網絡參數
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];
// 定義激活函數
function sigmoid(x) {
return 1 / (1 + Math.exp(-x));
}
// 定義前饋神經網絡函數
function feedForward(input) {
// 計算第一層輸出
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]));
}
// 計算第二層輸出
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]
神經網絡的輸出結果可以被解釋為對不同類別的概率估計。在這個示例中,神經網絡的輸出是一個包含兩個元素的向量,這兩個元素分別表示輸入屬于兩個類別的概率估計值。因此,這個前饋神經網絡可以用來進行二分類任務。
類似地,像ChatGPT這樣的語言生成模型也可以被解釋為對不同單詞或單詞序列的概率估計。在ChatGPT中,當我們輸入一段文本時,模型會根據已有的文本上下文來預測下一個單詞或單詞序列的概率分布,并從中選擇概率最高的單詞或單詞序列作為輸出。因此,ChatGPT中的輸出結果也可以被解釋為對不同單詞或單詞序列的概率估計。
經過這個流程,就可以理解ChatGPT是如何得出回答的文案的了。
ChatGPT怎么知道你問的什么?
前面提到了答案是如何一個詞一個詞生成的,那ChatGPT又是怎么知道你問的什么呢?ChatGPT 使用自然語言處理技術和深度學習算法對用戶的輸入進行語義分析和意圖識別,以更好地理解用戶的意圖和需求。然后,ChatGPT 可以通過對話歷史和上下文信息等因素進行分析,ChatGPT 根據預測的概率分布隨機選擇一個單詞作為下一個單詞,然后將該單詞加入到生成的回答中。
由于采用的是概率性的組裝單詞的方法,因此 ChatGPT 生成的回答可能會出現一些語法或語義上的錯誤。為了提高回答的質量,可以采用一些技巧,如使用束搜索(Beam Search)方法、加入語言模型的懲罰項(如長度懲罰、重復懲罰等)等。這些技巧可以有效地減少生成回答中的錯誤,提高回答的質量。
總結
以上就是生成式AI的基本工作原理,通過深度學習算法處理大量的文本數據,從而學習語言的語法和語義規律,并能夠自動生成符合語法和語義的文本。在生成文本時,生成式AI會基于上下文信息生成一個語言模型,然后利用隨機采樣或貪心搜索方法生成文本序列。
-
神經網絡
+關注
關注
42文章
4807瀏覽量
102755 -
AI
+關注
關注
87文章
34173瀏覽量
275333 -
人工智能
+關注
關注
1804文章
48691瀏覽量
246419 -
ChatGPT
+關注
關注
29文章
1587瀏覽量
8794
發布評論請先 登錄
【國產FPGA+OMAPL138開發板體驗】(原創)6.FPGA連接ChatGPT 4
在FPGA設計中是否可以應用ChatGPT生成想要的程序呢

寫給小白們的FPGA入門設計實驗
科技大廠競逐AIGC,中國的ChatGPT在哪?
ChatGPT系統開發AI人功智能方案
AI 人工智能的未來在哪?
寫給小白們的FPGA入門設計實驗

ChatGPT對AI行業有何影響?
在ChatGPT風口上,AI的機遇與泡沫同在
ChatGPT原理 ChatGPT模型訓練 chatgpt注冊流程相關簡介

chatGPT和ai有什么區別 ChatGPT的發展過程
寫給小白的AI入門科普

評論