【譯】3 Reasons Why PHP is Not Yet Perfect for Machine Learning

前言

最近做了一些數據分析、機器學習的工作,使用的是php-ml這個庫,前期還算不錯,不得不佩服作者arkadiuszkondas的API設計能力和算法功底。但是,隨着數據量越來越大,發現訓練時長劇增、內存利用率不高,於是翻了翻作者的博客找到了這篇文章,故譯之。

正文

爲什麼說目前的PHP生態還不能夠普遍落地機器學習框架,我認爲主要有三個原因造成當今這種狀況。下面我將陳述這幾個觀點:

可視化的可能性幾乎爲零

…無論是以計算還是以圖表的輸出方式都應該學習,這樣的呈現纔是易於理解的 —— F. J. Anscombe, 1973

讓我們問自己一個簡單的問題:下面這些圖形有什麼共同點呢?(這些都是簡單的集合點:x和y)

在這裏插入圖片描述

答案非常簡單與令人驚訝:一套共同的指標。這些圖都非常相似(小數點準確到第二位):

  • X 平均值: 54.26
  • Y 平均值: 47.83
  • X 標準差: 16.76
  • Y 標準差: 26.93
  • 相關係數: -0.06

驚訝嗎?還沒完。向datasaurus問好:

在這裏插入圖片描述

是的,那些點在這張圖上面顯示是相同的指標

我希望能讓你相信,機器學習過程的一個基本組成部分是數據可視化。

目前,與豐富的Python生態相比,在PHP中我們沒有任何圖表支持。下面我給你展示一下,畫一個圖去查看你的已預測數據是多麼簡單!別忘了那隻恐龍~

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dino.csv',header=None)
plt.scatter(data[0], data[1], color='red');

好了,4行代碼,完美~

比分:PHP: 0 - Python: 1

PHP不支持Jupyter Notebook

Jupyter Notebook是一個無與倫比的學習機器學習的工具。你可以只使用瀏覽器準備、檢查、可視化數據和訓練你的模型。

所有這一切都歸功於這些強大的能力:混合代碼(Juila、Python和R)、文檔(markdown)、可視化(img)

下面是一個例子,一個Notebook片段:

在這裏插入圖片描述

在機器學習的世界裏,你會花大量的時間來分析數據。你會一直想要保留筆記、實驗和訓練各種類型的模型。當然,最好是能可視化。

這是一個有趣的犯罪數據分析的例子:Understanding Crime in Chicago

對了,我不會刻意說,這個筆記本還有版本控制的功能。

比分:PHP: 0 - Python: 2

不支持GPU

在你的數據集還未達到GB級別時,你不會想到使用深度學習,你更不會使用GPU。但是,這一天終將到來不是嗎,到時候我們能做些什麼呢?

比如說TensorFlow,相比其他環境的神經網絡,它以優秀的分佈式計算聞名。它給了你更多的可能性,去完全掌控計算組件(GPU、CPU),毫無疑問有了更多的選擇。

例如,你可以決定把變量放在哪,下面,我們把變量a放在GPU上運行,把常量b放在CPU上運行。

with tf.device('/gpu:0'):
    a = tf.Variable(15.12)

with tf.device('/cpu:0'):
    b = tf.constant(3.14)

這僅僅是開始。你可以設置一個服務器集羣來運行。你還可以使用TPU(張量處理組件)。專用的計算組件,可以加速機器學習進度。

在PHP裏面,我們發現一個有趣的倉庫:dnishiyama85/PHPMatrix

這是一個PHP擴展,支持浮點數矩陣運算,同時,它還支持 OpenBLAS sgemm 和 cuBLAS sgemm 函數

但是在我看來,在GPU上面的探索還任重道遠(crawls like a baby)

我不知道這裏有什麼比較的意義,但還是讓我們和平地做總結吧:

比分:PHP: 0 - Python: 3

總結

正如你看到的那樣,上面我選擇的三個主要原因足以說明,爲什麼PHP不是學習和使用機器學習的理想語言。但是,這不意味着情況會一直如此。

我想再一次提醒,PHP在創造之始是爲了在網站上展示HTML,現在,你可以使用它來構建企業級應用。讓我們看看一個例子:Spotify

通過網頁和巨大的移動設備流量,這個音樂流媒體服務使用symfony來支撐7500萬活躍用戶、每秒幾乎60萬請求

具有諷刺意味的是,Spotify有一個用於機器學習的服務器集羣:Spotify怎麼如此懂你?

也許未來,PHP寫機器學習的需求會到來,但只要上述問題不解決,我們沒有什麼指望。

但請不要悲傷。下面是我最喜歡的一句名言:

Those who are crazy enough to think they can change the world usually do.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章