Python AI 基礎語法,Colab 教學 === ###### tags: `GDG on Campus FCU` 講師:shao-ming Lu 日期:2025/3/25 課程影片: {%youtube -x6tVr9aWdo%} ## Google Colab 基於雲端的 Python 開發環境,讓使用者可以免費使用 Jupyter Notebook,並且提供 GPU 與 TPU 加速運算資源,適合機器學習與深度學習應用。 #### 使用Google Colab 1.登入Google帳號 2.建立Notebook (也可以選擇開啟.ipynb檔案) 3.連線的選項可以選擇執行語言以及執行裝置 4.可以連接雲端硬碟 `from google.colab import drive drive.mount('/content/drive')` 5.上傳檔案 `from google.colab import files drive.mount('/content/drive')` ## Python #### 特性 1.高階、直譯式、動態類型的程式語言 2.以簡潔易讀的語法聞名 3.具有廣泛的標準函式庫 #### 為什麼選擇 1.易學易用,適合初學者 2.具跨平台支援 ,例:Windows、macOS、Linux 3.社群龐大,資源豐富 4.強大的第三方函式庫,例:NumPy、Pandas、TensorFlow) #### 應用領域 資料科學與機器學習 (NumPy, Pandas, Scikit-learn, TensorFlow) 網頁開發 (Django, Flask, FastAPI) 自動化腳本 (批次處理、網頁爬蟲) 遊戲開發 (Pygame) 嵌入式系統與物聯網 (MicroPython, Raspberry Pi) ## 神經網路 #### 為什麼會有神經網路? 1.模仿人類大腦的學習方式 2.特徵提取的自動化 3.非線性問題的處理能力 4.大數據與計算能力的增長 #### 基本結構 1.輸入層(Input Layer): 接收輸入數據。 2.隱藏層(Hidden Layer): 進行特徵提取與非線性轉換。 3.輸出層(Output Layer): 輸出預測結果。 #### 訓練過程 ##### 前向傳播(Forward Propagation) 輸入數據,經過層與層之間的加權計算與激活函數變換,產生預測結果。 `Z=W*X+ba=f(x)` p.s. W是權重矩陣, X是輸入, b是偏差項,f() 是激活函數 ##### 損失計算(Loss Computation) 1.比較前向傳播的結果與實際的差距 2.均方誤差(MSE)適用於回歸問題 3.交叉熵(Cross-Entropy)適用於分類問題。 ##### 反向傳播(Backward Propagation) 根據誤差計算梯度,並透過梯度下降(Gradient Descent)或其變體(如 Adam、RMSprop)來更新權重。 ##### 反向傳播(Backward Propagation) 決定了神經元的輸出。 #### 實作 神經網路(MLP)-pytorch ##### 開發及用途 由 Facebook AI Research所開發的開源深度學習框架,主要用於機器學習和深度學習應用。 ##### 特點 1.動態計算圖 2.簡單易用的 API 3.GPU 加速(CUDA) 3.豐富的生態系統(torchvision、torchaudio、torchtext) ##### 介紹 張量(Tensor)是 PyTorch 的核心數據結構,類似於 NumPy 的多維陣列,可運行於 GPU 以加速計算。 ##### 實作 1.建立一個張量 2.張量的性質 3.GPU ## CNN #### 一般神經網路(MLP)是否可以直接用圖片上? 圖像通常由大量的像素組成,且每個像素都與周圍的像素有著強烈的關聯性,一般神經網路無法捕捉圖像結構。 #### 為什麼影像要用 CNN? CNN為專門設計來處理具有網格結構的數據(如圖像),其保留圖像的空間結構,通過卷積層自動提取圖像中的特徵,能有效地識別局部圖像結構。 #### CNN 的組成 其中包括卷積層(Convolution Layer)、池化層(Pooling Layer)、全連接層(Fully Connected Layer, FC)。 ##### 卷積層(Convolution Layer) 1.是 CNN 中最重要的部分 2.負責從圖像中提取特徵 3.可以識別圖像中的基本結構,如邊緣、角落、顏色變化和紋理等。 ##### 池化層(Pooling Layer) 1.減少特徵圖的尺寸 2.保留圖像中的重要特徵 3.減少計算量,並提高模型的穩定性 4.避免過擬合 ##### 全連接層(Fully Connected Layer, FC) 1.用來進行圖像分類或回歸 2.將來自卷積層和池化層的特徵圖轉換為單一的分類結果或回歸值 3.特徵圖會被展平成一維向量 #### CNN 與 MLP 的差異 1.資料分成訓練/測試集 2.不可把訓練集的loss或是Accuracy當作評估標準 3.overfitting問題 4.使用CPU/GPU時間差異 ## 優化手寫辨識模型 1.數據增強(Data Augmentation) *讓圖片隨機旋轉最多 10 度 *模擬圖片縮放和斜切變化 *變化圖片亮度與對比度 2.型深度加深 3.批次正規化(Batch Normalization) 4.Dropout 防止過擬合 *減少神經元對特定特徵的依賴 5.L2 正則化(Weight Decay) 6.增加全連接層(Fully Connected Layer) 7.訓練輪數增加至 10 #### 批次正規化(Batch Normalization) 每一層的輸入進入非線性激活函數(如 ReLU)之前對輸入做 標準化(normalization),讓輸入的均值接近 0,標準差接近 1。 #### Dropout 隨機丟棄(drop)部分神經元的輸出,Dropout 會隨機將一部分神經元設為 0,這些神經元 不參與前向傳播與反向傳播,使得模型每次都以不同的子網路進行訓練。 #### 進階優化方向 1.手寫辨識在深度學習中是非常簡單的任務,甚至不需深度學習就可解決 2.圖像分類有許多更困難的任務,需要更多方法解決 EX:動物識別、場景識別 ##### 嘗試其他優化器(SGD、RMSprop) 不同的優化器可能在不同的數據集上表現更好,可以嘗試不同的優化器以提高模型效能。 ##### 使用遷移學習(Transfer Learning) 遷移學習可以利用預訓練模型,加速模型訓練並提高效能。