機器學習如何在政務服務中落地應用?
人工智慧、機器學習、大數據這些辭彙無時無刻不在觸動我們的神經,不光是因為媒體鋪天蓋地的報道,還因為這些技術將切切實實改變我們的生活。那麼,政務服務能不能享受到新技術帶來的紅利?「一窗匯」一周年系列分享第一場,一窗研究院數據分析師張漢星帶來了他在機器學習和政務服務方面的思考,以下是分享實況。
人工智慧與機器學習
當下人工智慧的概念十分火爆,似乎各行各業的各種問題都可以用人工智慧來解決。政務服務行業也不例外,各種智能的應用層出不窮,例如智能問答機器人、輿情分析。大多數人有時候難免會疑惑,究竟什麼是人工智慧,人工智慧究竟有這麼神奇嗎,人工智慧還能為政務服務做一些什麼。
本次分享為大家介紹人工智慧里最核心的概念以及技術,機器學習。「機器學習是對能通過經驗自動改進的計算機演算法的研究」,它在多個領域都佔據相當重要的地位,如下圖所示。
儘管這種方法被稱為「學習」,但是在目前的實際問題中一般都是採用統計學的方法,從大量的數據中抽象出一定的規律,這個發現規律的過程一般稱為「訓練」。也有人把目前的機器學習稱為統計學習方法。
而現在所謂的人工智慧其實大部分都算是機器學習的一個分支,叫做深度學習。深度學習的主要特點是使用了多層神經網路。深度學習之前的機器學習演算法被稱為傳統機器學習。
深度學習相比於傳統機器學習能有了很大的改進,這個會在後面詳細說明。但是本質上仍屬於統計學習方法,也就是說仍然只是對統計規律的發掘,距離真正的智能仍然有巨大的差距。所以業內對人工智慧有很多人持有懷疑的態度,至少從用詞上,業內很少有人會用「人工智慧」,更多地使用「機器學習」或「深度學習」。
機器學習實例
定義非常抽象,來舉個例子。以各種電商的推薦功能為例,電商網站會推薦一些商品給消費者,其中的原理是怎樣的呢,是因為它能了解這些產品嗎,亦或是它能懂消費者?其實它既不懂產品也不懂消費者,用到的是一種叫做協同過濾的機器學習演算法。
因為是統計學習方法,所以需要大量的數據作為支撐。在用戶使用電商平台購物時,電商會把這些歷史,都記錄下來,並根據一些演算法給用戶和商品之間的關係打一個分值,比如一種簡單的方式,以購買次數作為分值,於是能獲得一個分數關係矩陣,如下圖:
根據這個矩陣使用機器學習演算法提煉出一些統計規律來進行推薦。
常用的一些演算法有:
頻繁集挖掘:找出同時出現次數最多的組合。比如對大多數用戶商品1和商品3是同時出現的,那麼對購買商品1的用戶就可以推薦他購買商品3。沃爾瑪通過這種方式發現了啤酒和尿布之間的聯繫,被視為數據挖掘的經典案例。
協調過濾:分析分數之間的一些規律。例如用戶4和用戶11的打分明顯負相關,所以應該給用戶11推薦用戶4打分低的,用戶10和用戶11打分呈正相關,應該給用戶11推薦用戶10打分高的。
這樣機器學習演算法實現了一個推薦系統。可以用類似的方法幫助政務服務人員發現套餐,或者是開發一個事項的推薦系統。我們對南沙的辦件記錄進行了類似的挖掘,發現了一些規律。例如防雷裝置設計審核這個事項在很多建設項目里都是需要辦理的,可以和消防、環評一樣加入到建設項目的套餐里。對外貿易經營者備案登記和《食品經營許可證》新辦這兩個事項經常同時出現,這也是南沙區作為自貿區和港口的特色,可以組成一個套餐。
看起來一個電商用的推薦演算法好像沒什麼難度。其實這只是一個很粗淺的實現,想要做到精確精準還有很多業務上的問題要考慮。比如說:一個消費者買了一種食品,說明他喜歡這種食品,可以推薦給他。那如果他買了一個電腦呢,顯然不能再用這種邏輯了,因為電腦短時間內不會買新的,該買新的電腦的時候這種電腦又跟不上時代了。
有人也許會有疑問,機器學習或者所謂的人工智慧能不能去了解一個人或者一個商品來進行推薦呢?以目前的技術水平來看是不行的,機器學習里最重要的步驟是特徵提取並向量化。因為計算機只能處理數字化的向量。對於一個真實商品的用途、或者更抽象的一個客戶的想法,計算機都是無能為力的。只有這種分數矩陣可以向量化,所以可以作處理。
傳統機器學習方法處理文本
前面說可以難以向量化的東西不能用機器學習處理,那是不是可以向量化的內容就可以處理了呢?
對於很多傳統的機器學習方法,一些可以向量化的內容也是處理不了的,比如圖片、音樂和視頻,因為它們數據量太大,當然也可以通過一些預處理手段減少數據量,但是那就涉及到其它的領域了。所以真正適合用傳統機器學習處理的對象就只有文本了。
現在針對文本的機器學習應用也有很多,最常見的是各種閱讀軟體的推送系統。我們在南沙爬取了網上辦事大廳所列出的事項,並以此為例,介紹處理的方法和主要問題。
處理文本的過程大致如下:
A收集數據:我們寫了一個網路爬蟲在南沙網上辦事大廳爬取事項的辦事指南網頁,並根據網頁上的標題保留了信息量比較大的部分(如申請條件、法律依據、材料等),組成完整的文本,一共爬取了600多個事項。
B分詞(東亞語言特有):處理東亞語言時需要將連續的文本拆分成單獨的單詞。對於中文,分詞可以說是應用效果的決定因素,所以相應的演算法研究也非常多。
現在一般的方法是人工分好部分文本,組成一個很大的語料庫,再從裡面發現部分統計規律,應用到新的文本中。
可以看到這個分詞演算法本身就是一個典型的機器學習問題。
無論採取哪種分詞方式,都會存在以下一些問題:
粒度:北京大學or北京/大學;
近義詞:法人代表-法定代表人;
專有名詞:未在詞庫中出現的詞語如何處理,如人名地名等;
C 向量化:需要將文本通過向量表示出來。對於很複雜的應用,需要將每個詞向量化,整篇文章變成一個矩陣。但對於推薦系統這種相對簡單的應用,只需要將整個文本做一個向量化。大概方式就是記錄下出現的詞語和次數,再轉化成向量。
這裡有個問題就是每個詞的價值是不一樣的,例如說在事項中,「原件」這個詞基本每個事項都會出現,因此沒有太大的價值,有些詞語只出現在很少的幾個事項中,價值就高。所以需要有個加權演算法,常用的有以下兩種:
TF-IDF演算法:
統計每個詞語在某一篇文章中出現的頻率p,和在所有文章或網頁中出現的概率q;
可以得到這個詞在這篇文檔中提供的信息量p*-log q (有信息熵的概念);
沒有考慮詞語的先後順序、上下文關係 如:我喜歡看電影不喜歡看書=我喜歡看書不喜歡看電影
工傷認定事項轉化為了這樣一個向量:
TextRank演算法
受google PageRank演算法啟發產生的演算法
每一個詞語都有初始的權值,將權重按一定規則傳遞給附近的詞語,迭代後可以達到穩定
可以以同樣的方式在句子間傳遞權重,提取摘要
會聚集到出現次數多的詞語(原件、複印件、核驗)
因為事項描述格式化比較強,經測試不是很適合該演算法
D 推薦演算法
將兩個向量進行比較,選出最相似的,有多種標準。
推薦:歐幾里得距離;交並集;餘弦相似度。
兩個已經向量化了的文本:
這兩個向量維度(所包含的詞語不同),所以要化為同樣的維度。
直觀感覺這兩個事項很相似,但是需要有量化的標準,如:
其中餘弦相似度是應用範圍最廣的演算法。
基於這些演算法和數據,我們製作了一個事項的推薦系統,地址是http://www.onewindow.cn:8080/affairRecommend/keyWordRecommend/index.action
對於政務服務工作的啟示:
政務服務工作的專業化程度高,專有名詞多,特別是各個地方的地名多。在我監督分詞的過程中,基本每個事項都可以找到1到2個需要加入到詞典的詞語;
在政務服務工作中必須要規範用語,各地都應該對專有名詞梳理出詞典,這樣可以提高大大分詞質量,並提高基於自然語言處理的應用質量;
這種演算法的缺點是無法理解語義上的內涵,例如近義詞等,無法自動的關聯。想要做到這些必須藉助深度學習的手段。
從傳統機器學習到深度學習
傳統機器學習到深度學習(所謂的人工智慧)經歷了漫長的發展,還是以一個業務問題來舉例:假設說一個婚戀網站需要給一個用戶推薦一個對象,這個演算法該如何實現。
濫觴時代:傳統演算法,所有的規則由人類來設置(樹、圖等),人為設置一個判別標準;
問題:沒有針對性,不會隨著實際的情況變化;
經典時代(傳統機器學習):人類提取特徵、找出對應演算法、演算法發現規律(支持向量機、adaboost、決策樹、邏輯回歸);
比如我們為男性提取出了以下一些特徵(年齡,長相,收入,職業),然後將男性隨機地推薦給女性,記錄下女性決定見面的男性,從中提取規律。選擇一個演算法(例如決策樹)進行訓練。
有可能獲得了同一個結果,但是含義完全不一樣。
好處:有針對性,例如有的女性可能喜歡年長的男性,那麼第一個條件可能正好相反。有的女性可能不在乎長相,那就沒有第二個判斷,以此類推。會變化,隨著積累的數據越來越多,規律也會有相應的變化,比如隨著時間的推移,對年齡的要求變寬了,那第一個條件也會發生變化。
問題:
能處理的維度較低,邊界要求可分。例子,比如我可以接受錢收入低一點但是長得帥一點,形成一個比較複雜的邊界。這樣複雜的邊界對於傳統機器學習是難以處理的。
神經網路:人類提取特徵、演算法發現規律;
好處:可以處理很高的維度,非常複雜的邊界。
問題:仍然需要提取特徵,例如帥或者不帥這個特徵,每個人標準不一樣,不便直接提取。
深度學習:演算法提取特徵,演算法發現規律(CNN,RNN,autoEncoder)。
好處:不需要人工提取特徵,直接把照片當參數傳進去,可以選出用戶最喜愛的一類長相。
缺點:深度學習的整個過程都脫離了人的掌握,所以一旦出現問題非常難排查。
未知的新世界:演算法自己設計演算法(網路結構演進);
卷積神經網路處理大規模的矩陣(如圖像);
循環神經網路處理有上下文關係的數據(如文本、語音);
自動編碼機進行特徵提取;
深度學習最大的好處是可以處理維度很高的數據,並自動從數據中提取特徵。以人臉識別為例。傳統的人臉識別演算法都是人類嘗試提取特徵,將一副人臉的圖片化為若干個特徵點,先降低數據的維度,然後比較特徵點的分布進行人臉識別。
深度學習的方式是將分類好的人臉圖片數據直接放入神經網路,訓練神經網路。
以前面說的近義詞分析為例,通過深度學習,甚至可以發現一些類似邏輯上的關係:
值得一提的是,這種關係的發掘仍然是非常依賴語料庫的構建的。我們仍然以南沙的事項為語料庫做訓練。深度學習需要的數據量遠遠超過傳統機器學習,所以這個語料庫相對有點小,因此結果可能不是很理想。這裡列舉幾個訓練出的關係緊密的詞語:
車輛:船隻0.5803288, 定位0.56443155, 入市0.52192205,貨運0.42179668, 貨車0.42154157
在機器學習的發展歷程中,越來越多的工作交由機器來完成。人類對整個演算法的處理過程和結果失去了掌握。
進入深度學習的時代後,人們逐漸發現對很多問題,機器提取的特徵已經遠遠好於人類提取出的特徵,例如alphaGo提取的圍棋的特徵,圖像識別演算法提取的圖像的特徵等等。換言之,人類的理解已經逐漸跟不上機器了。
TAG:機器學習 |