TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018
Google 開發者大會 (Google Developer Days,簡稱 GDD) 是展示 Google 最新開發者產品和平臺的全球盛會,旨在幫助你快速開發優質應用,發展和留住活躍使用者群,充分利用各種工具獲得更多收益。2018 Google 開發者大會於 9 月 20 日和 21 日於上海舉辦。
Laurence Moroney(Google 開發者技術推廣工程師)與付弋真(Google Brain 的軟體工程師)帶來一場《TensorFlow 簡介:機器學習技術使用入門》的演講,本文將對演講做一個回顧。
TensorFlow 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),伺服器,移動裝置等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智慧研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網路方面的研究,但這個系統的通用性使其也可廣泛用於其他計算領域。
Laurence Moroney講述了他經歷的變革。網頁的變革從程式員的角度上來說,網頁改變了人們所有的一切。通過網頁,程式設計師們可以寫出讓上億的使用者接觸到的程式。這場變革帶了新的商業模式,比如谷歌、百度、淘寶等等。智慧手機也帶來了一場變革,同樣也帶來了像滴滴和 Uber 這樣的商業體驗。我們正在面臨下個變革,也就是機器學習的變革。

如上圖所示,Laurence Moroney認為人工智慧正處在技術萌芽觸發期與期望膨脹頂峰期之間。
運動檢測APP

在藉助手機速度感測器的幫助下,我們可以獲取當前使用者的速度,然後再使用程式碼進行判斷。
- speed < 4 定義為步行,
- 4 <= speed < 12 定義為跑,
- speed > 12 定義為騎車
一些簡單的運動場景可以通過上述型別的方式進行檢測,倘若使用者在打高爾夫是無法被檢測出來,而機器學習可以幫我們解決在這個問題。

是設定規則和資料,從而給出答案。通過Java、Python、C++等語言來編寫規則,在輸入一些資料之後打包編譯成程式,給出答案,簡單運動檢測APP就是這樣實現的。
機器學習需要程式設計師提供答案和資料,給答案打上標籤,在資料的配合之下,機器會自己研究出規則。

,而不再需要程式設計師自己去定義複雜的規則。這樣會變得更加智慧化,在能檢測簡單的運動狀態的同時,也能夠檢測出向打高爾夫這樣難以用規則去判斷的複雜的運動狀態。

在學習新的事物時,我們的大腦往往是先得到答案和資料,從而總結出經驗規律,這也是機器學習所想要實現的。在玩井字棋(如下圖所示),一開始我們只是瞭解這個遊戲的規則和玩法,但是如何贏得比賽就需要數盤的遊戲經歷,從中總結出經驗。

機器學習就是在模仿人類,通過大量的資料和標籤,得到規則,從而解決問題。讓機器像人一樣學習,這是機器學習所要走的第一步。

程式碼實踐( 付弋真主講 )
數字之間關係

之間存在關係。將數字提供給機器,希望機器像人腦一樣學習,從而給出數字之間的關係。

。我們在看到這些數字之後,大腦會嘗試去找出一些規律,利用我們所擁有的數學經驗,進行猜測,猜測的驗證結果是正確,所以得到了這個方程式。那通過機器學習如何做到這一點呢?

from tensorflow import keras import numpy as np model = keras.Sequential([keras.layers.Dense(units = 1, input_shape = [1])]) model.compile(optimizer = 'sgd', loss = 'mean_squared_error') xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype = float) ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype = float) model.fit(xs, ys, epochs = 500) print(model.predict([10.0])) 複製程式碼
結果如下:

,因為神經網路存在很多種可能性,機器給出的是一個預測的結果而不是一個準確無誤的結果。
識別不同的衣服

上圖中有8中不同的衣服,作為人類我們可以分辨每個衣服的種類。那機器能否做到這一點呢?

Fashion-MNIST是一個替代MNIST手寫數字集的影象資料集。 它是由Zalando(一家德國的時尚科技公司)旗下的研究部門提供。其涵蓋了來自10種類別的共7萬個不同商品的正面圖片。Fashion-MNIST的大小、格式和訓練集/測試集劃分與原始的MNIST完全一致。60000/10000的訓練測試資料劃分,28x28的灰度圖片。
通過 Fashion-MNIST 資料集,可以對我們的模型進行訓練,不斷地優化,從而提高識別準確率。
import tensorflow as tf from tensorflow import keras import numpy as np # Import the Data fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels), (test_images, teat_labels) = fashion_mnist.load_data() # Normalize the data train_images = train_images / 255.0 test_images = test_images / 255.0 #Define the model model = keras.Sequential([ keras.layers.Flatten(inport_shape = (28,28)), keras.layers.Dense(128, activation = tf.nn.relu), keras.layers.Dense(10, activation = tf.nn.softmax), ]) model.compile(oprimizer = tf.train.AdadeltaOptimizer(),loss = 'sparse_categorical_crossentropy',metrics=['accuracy']) #Train the model model.fit(train_images, train_labels, epochs = 5, verbose = 2) predictions = model.predict(test_images) print(test_images[4560]) print(np.argmax(predictions[4560])) 複製程式碼
執行結果如下:

在設定5次迭代的前提下,本模型的成功率為 71% 。神經網路可以通過更多的訓練,從而提高準確率。
以上就是本次演講的全部內容,希望對大家有所幫助
