iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

筆者決定先處理一個目前閱讀文獻產生的根本性疑惑:為了達成預測噪音發生時間的期待,到底需要多少的統計學基礎

問題意識

先說個故事。

先前因為工作專案需要,筆者曾自學並訓練辨識網站驗證碼 (captcha) 的模型。最後一版交付的模型辨識成功率約 70%,有達到團隊認為「堪用」的標準,是一筆自豪的「戰功」。

當時我的職位是後端工程師,負責維護資料庫、開發 API 以及撰寫爬蟲。

公司其實並沒有要求我處理 captcha 這一段,只是筆者在自學轉職成工程師之前,曾處理過不少量的資料標記。(所謂的工人智慧。 Day 05 有提到)在標記的過程中,筆者與一位機器學習工程師有大量的合作。但我對於機器學習的理解,都是那位工程師轉化過的語言。在開始自學之前,我對機器學習的理解,除了基本中的基本外,只知道有不同階段的模型false positve 以及 true positive (後來才知道叫 confusion matrix)、文字關聯度向量、機器學習對於文字處理的極限等。

在做標記工作的時候,就有對自己期許:希望不久的將來也可以自己設計、改良分析方法,訓練模型

回到團隊要在兩週內有自動化解 captcha 方案的場景,我就先從個人 side project 開始:

  1. 自行標記 captcha 圖片 (500 張)
  2. 同時從零開始學習 Keras 和 Tensorflow 的 API
  3. 因為只碰過一點 Python,所以也利用這個機會瞭解 Python 的一些寫法
  4. 參考他人已經寫好的 code & 閱讀技術文章及討論區
  5. 依照目標網站圖片特性實作
  6. 最後完成 source code prototype

Prototype 繼續移轉到工作的專案改寫、訓練,並封裝成 Docker image。最後看到接手模型的同事電腦,只用了 docker run 一行指令,就成功印出四碼的正確結果,內心的感動真的難以言喻

但必須承認即使經過此專案,筆者對於機器學習,除了更進一步理解了 layerCNNMax Poolingonehot-encoding激勵函數二維矩陣epoch等概念,更多的體悟其實是「知道的愈多,發現自己愈渺小,什麼都不會」。上一篇提到的 loss function,甚至稍早才回想起當初有用來作為判斷依據。

如何評量模型的好壞訓練過程產出許多數值的意義、以及要如何建立方法(例如選擇激勵函數、或是不同 layer 之間誰先誰後、參數值需要帶多少)等問題,我是回答不出來的。

我能做到的,只是把標記好的圖片丟進 Keras 和 Tensorflow 的 API,稍微調整參數及設定變數,一知半解地兜出「堪用」的模型。


反思

筆者希望透過這次的專案,可以做到理解資料分析的本質,能挑選合適的工具(不一定是機器學習),並能透過統計的概念衡量成果的好壞。即使最後我們希望達成的需求看起來很微小。

明天讓我們從資料分析需要多少統計學的問題出發繼續學習吧!


上一篇
文獻閱讀整理:Noise Prediction Using Machine Learning with Measurements Analysis (Part 1)
下一篇
文獻閱讀整理:資料分析需要的統計學
系列文
預測惱人的人事物:跟我一起學習如何用資料分析來避開他們38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言