業務系統如何引入神經網路

超人汪小建發表於2019-01-24

切入點

目前的AI其實更多就是僅僅用來從歷史資料中學習到一些規律而已,在業務上,更多的只是減少人為介入工作,所以要在業務系統中引入神經網路,其實主要就是在要找到切入點。

簡單來說,可以走訪一線使用者看他們花最多的時間在系統哪些地方,經常重複了哪些工作,也可以通過統計日誌找到合適的切入點。

理解問題

  • 業務上要解決的問題:預測某個分類。
  • 問題涉及到的資訊管道:xx。
  • 資料來源及採集方式:資料來源在xx業務系統上,可由相關api獲取。
  • 資料屬於定期釋出還是實時:定期&實時釋出。
  • 影響模型的有價值因素:諮詢業務專家提供初步模型特徵。
  • 工作量:制定專案計劃。

資料預處理

  • 過濾操作,將不符合條件的資料記錄去掉。
  • 空值填充,補0或其他填充措施。
  • 對資料進行標準化處理。
  • 字串集標籤化。

樣本統計

對樣本進行統計分析,看看可用樣本數量為多少,對於一般的分類任務,每個分類的樣本數一般可以從幾千到上萬個。另外也要檢查是否存在樣本不平衡問題,如果存在的話要對其進行平衡處理,比如上取樣操作。

模型定義

定義模型,比如定義傳統的多層神經網路,兩個隱含層,每個層100個神經元。

確定輸入為attribute1、attribute2、...,輸出為分類編號。

損失函式可選:tanh、logistic或relu。

優化方法可選:梯度下降法或adam。

image

模型訓練

  • 將整個資料集分成兩組,比例是8:2,第一組為訓練集,用於調整模型引數;第二組為測試集,用於測試訓練得到的模型準確性。
  • 最大迭代數為10000。
  • 批大小為200。
  • 優化提升容忍程度為1e-8。
  • 標準化初始權重。

模型迭代

模型的效果需要不斷分析特徵,選擇或生成更有價值的特徵,不斷優化模型效果。比如

  • v0.1 憑感覺選擇若干資料特徵作為輸入,效果可能比較差。
  • v0.2 諮詢業務專家,結合他們的意見使用或者生成更有價值的特徵,precision、recall、f1-score都提升了,因為增加了某些屬性,而且還從額外的系統提取了有用的特徵。
  • v0.3 已經無法直接找到有價值的特徵,可以考慮引入自然語言處理對一些文字進行分析,使用詞向量、tfidf之類的特徵,precision、recall、f1-score都達到90%以上。
版本 precision recall f1-score
v0.1 0.52 0.59 0.54
v0.2 0.83 0.82 0.81
v0.3 0.91 0.90 0.90

線上部署

有以下幾種方式部署模型,需要綜合考慮。

  • 嵌入到業務系統中,將模型與業務系統耦合,需要考慮業務系統和模型開發使用的統一語言,比如業務系統一般用java開發,模型較多使用python,而java調python併發起來後效能有問題,不然就用java做模型並提供jar。
  • 單獨模型部署,將模型系統通過服務形式對外開放,由業務系統訪問,達到解耦效果,但對於一些情況下會導致整個系統架構比較重。
  • 後臺部署,直接由模型系統訪問業務資料層,將預測的結果回寫到業務資料持久化中。

-------------推薦閱讀------------

我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)

為什麼寫《Tomcat核心設計剖析》

2018彙總資料結構演算法篇

2018彙總機器學習篇

2018彙總Java深度篇

2018彙總自然語言處理篇

2018彙總深度學習篇

2018彙總JDK原始碼篇

2018彙總Java併發核心篇

2018彙總讀書篇


跟我交流,向我提問:

業務系統如何引入神經網路

歡迎關注:

業務系統如何引入神經網路

相關文章