給所有人的深度學習入門

Source: Deep Learning on Medium

這是個對人工智慧(Artificial Intelligence, AI)趨之若鶩的時代。此領域近年的蓬勃發展很大一部份得歸功於深度學習以及神經網路的研究。現行的深度學習框架(framework)也日漸成熟,讓任何人都可以使用 TensorFlowPyTorch 輕鬆建立神經網路,解決各式各樣的問題。

舉例而言,你在 30 秒內就可訓練出一個能夠辨識數字的神經網路:

# 此例使用 TensorFlow,但各大深度學習框架的實現邏輯基本上類似
import tensorflow as tf
# 載入深度學習 Hello World: MNIST 數字 dataset
mnist = tf.keras.datasets.mnist
...
# 建立一個約有 10 萬個參數的「小型」神經網路
# 在現在模型參數動輒上千萬、上億的年代,此神經網路不算大
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
# 選擇損失函數、optimizer
mondel.compile(optimizer='adam', ...)
# 訓練模型
model.fit(x_train, y_train, epochs=5)
# 訓練後的 NN 在測試集上可得到近 98% 正確辨識率
model.evaluate(x_test, y_test)
# 實際測試結果
# loss: 0.0750 - accuracy: 0.9763

是的,扣除註解不到 15 行就可以把讀取數據、訓練 model 以及推論全部搞定。這邊秀出程式碼只是想讓你感受一下現在透過框架建立一個神經網路有多麽地「簡單」。事實上,這也是絕大多數線上課程以及教學文章會教你的東西。對此數字辨識應用有興趣的讀者稍後也可自行參考 TensorFlow 的 Colab 筆記本

我等等要秀給你看的任何一個神經網路都要比這個 model 還簡單個一萬倍(以參數量而言),但觀察並理解這些「簡單」神經網路,將成為你的 AI 旅程中最有趣且實用的經驗之一。