Skip to content
Rain Hu's Workspace
Go back

[AI] 1-2. 機器學習的基礎技術

Rain Hu

機率建模(Probabilistic modeling)

單純貝氏演算法(Naive Bayes thorem)

單純貝氏定理是一種基於機率理論的分類方法,適用於文本分類等任務,其核心概念是基於特徵條件獨立的假設來計算後驗機率。

以下是一個使用 Python 使現文本分類的範例

from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer

# 示範文本數據
texts = ["這部電影很好看", "服務很差", "餐點美味", "環境很糟"]
labels = ["正面", "負面", "正面", "負面"]

# 將文本轉換為特徵向量
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

# 訓練模型
clf = MultinomialNB()
clf.fit(X, labels)

# 預測新文本
new_text = ["這家餐廳很棒"]
new_X = vectorizer.transform(new_text)
prediction = clf.predict(new_X)

邏輯迴歸(logistic regression, logreg)

邏輯迴歸是一種二元分類問題的基礎演算法。儘管名稱中有「迴歸」,但實際上是一個分類模型,通過 sigmoid 函數 將線性預測轉換成機率值。

from sklearn.linear_model import LogisticRegression
import numpy as np

# 示範數據
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
y = np.array([0, 0, 1, 1])

# 創建和訓練模型
model = LogisticRegression()
model.fit(X, y)

# 預測
prediction = model.predict([[2.5, 3.5]])

早期的神經網路

1980年代的神經網路發展奠定了現代深度學習的基礎。反向傳播算法的發明是一個重要突破,它提供了一種有效的方法來訓練多層神經網路。

1989年 Yann LeCun 結合卷積神經網路(Convolutional Neural Network, CNN) 和反向傳播,應用於手寫數字分類問題。

反向傳播(Backpropagation)

反向傳播是一種梯度下降最佳化(gradient-descent-optimization)的演算法,用於調整神經網路中的權重。其過程可以簡化為:

  1. 前向傳播:輸入數據通過網路產生預測
  2. 計算誤差:比較預測值與實際值
  3. 反向傳播誤差:從輸出層向輸入層計算梯度
  4. 更新權重:使用梯度下降來優化網路參數

以下是一個使用 PyTorch 實現簡單神經網路的例子:

import torch
import torch.nn as nn

class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.layer1 = nn.Linear(784, 128)
        self.layer2 = nn.Linear(128, 10)
        
    def forward(self, x):
        x = torch.relu(self.layer1(x))
        x = self.layer2(x)
        return x

# 創建模型
model = SimpleNN()

Kernel methods 與 SVM

支持向量機(Support Vector Methods, SVM)是一種強大的分類算法,通過在高維空間中尋找最優分類超平面來工作。

Kernel tricks

將資料映射到高維空間在理論上可行,但在實際上卻常常很難處理(因為維度高,計算負載變大)
我們不必在高維度空間把每一個資料點都做座標轉換,然後在高維度上計算決策超平面,取而代之,只要計算高維空間中點與點之間的距離即可。

from sklearn.svm import SVC

# 創建SVM分類器
svm = SVC(kernel='rbf')  # 使用RBF核函數
svm.fit(X_train, y_train)

# 預測
predictions = svm.predict(X_test)

決策樹、隨機森林和梯度提升機器

決策樹 Decision Tree

決策樹模擬人類決策過程,通過一系列問題將數據分類。它像是一個流程圖,從根節點開始,根據特徵值選擇分支,最終到達葉節點得到預測結果。

from sklearn.tree import DecisionTreeClassifier

# 創建決策樹
tree = DecisionTreeClassifier(max_depth=3)
tree.fit(X_train, y_train)

隨機森林 Random Forest

隨機森林是多個決策樹的集成,每棵樹使用隨機選擇的特徵和數據樣本進行訓練。最終預測是所有樹的投票結果。

from sklearn.ensemble import RandomForestClassifier

# 創建隨機森林
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, y_train)

梯度提升機 Gradient Boosting Machines (GBM)

梯度提升機是一種迭代式的集成方法,每次迭代都試圖糾正之前模型的錯誤。

from sklearn.ensemble import GradientBoostingClassifier

# 創建梯度提升機
gbm = GradientBoostingClassifier(n_estimators=100)
gbm.fit(X_train, y_train)

深度學習最大的優勢

現代機器學習框架應用

主流框架比較

  1. Scikit-learn:適用於傳統機器學習算法
  1. TensorFlow/Keras:
  1. PyTorch:

Share this post on:

Previous
[AI] 1-3. 深度學習的發展
Next
[AI] 1-1. 何謂人工智慧?