「初探機器學習使用Python」まとめ#3 第一章 大致接近正確的軟體
「初探機器學習使用Python」(↓の中国語版 )
Thoughtful Machine Learning with Python: A Test-Driven Approach
- 作者: Matthew Kirk
- 出版社/メーカー: O'Reilly Media
- 発売日: 2017/01/27
- メディア: ペーパーバック
- この商品を含むブログを見る
前回↓
#3では第1章について扱う。
將軟體撰寫正確
SOLID
SOLIDはソフトウェア開発における5原則で,Robert Maetinにより提唱された。
- 單一職責原則(SRP-Single Responsibility Principle)
- 開放/封閉原則(OCP-Open / Closed Principle)
- 里氏替換原則(LSP-Liskov Substitution Principle)
- 介面隔離原則(ISP-Interface Segregation Principle)
- 相依性反轉原則(DIP-Dependency Inversion Principle)
詳細はここでは省略,以下などを参考。
https://postd.cc/solid-principles-every-developer-should-know/
https://qiita.com/yui_mop/items/93fef037a787318e7067
測試與TDD
測試驅動開發的想法很簡單:
撰寫一個測試項,記錄要實現的內容;
首先進行測試以確驅動開發的想法很簡里定此測試項運作失敗,接著撰寫程式碼修正此測試項,並在通過測試之後,調整相關程碼以符合SOLID原則。(p5)
単語
意訳
「テスト駆動開発の考え方は単純です:
テスト項目を書いて達成したいことを記録します;
手順
- とても簡単な駆動開発のアイデアを確認するテストを実行する,ここでテスト項目は失敗する
- テスト項目を修正するコードを書く
- テストに成功した後,SOLID原則に従うために関連コードを調整する。
」
重構
重構 現有的程式碼以避免技術債的累積(p6)
単語
- 重構:refactoring,リファクタリング
- 現有:あり合わせの,既存の
- 技術債:Technical debt,技術的負債
意訳
「技術的負債の累積を回避するために既存のコードをリファクタリングする」
簡単に言えば,重構とはプログラムを整理することである。技術的負債とは,欠陥のあるコードを放置すると取り返しのつかないことになる(利息が積み重なるような)ことの例えである。
撰寫正確的軟體
用機器學習撰寫正確的軟體
省略。
究竟何謂機器學習?
省略。
機器學習的高利貸技術債
Machine Learning: The High-Interest Credit Card of Technical Debtにおける著者の主張を表す一文。
文中指出機器學習專案本質上是複雜且邊界模糊,重度仰賴資料相依性內容,遭受系統級的麵條式程式碼(spaghetti code)影響,以及可能 因為外界的變化而徹底改變。
単語
- 專案:project,重大事項
- 仰賴:〜に頼る,〜に依存する
- 系統:system
- 可能:〜かもしれない
- 因為 X 而 Y:XによってY
意訳
「本稿では、機械学習プロジェクトは本質的に複雑で境界がぼやけており、データ依存型コンテンツに大きく依存し、システムレベルのスパゲッティコードの影響を受け、外部からの変更によって急激に変わる可能性があると指摘する。」
参考:
機械学習システムにおける「技術的負債」とその回避策 - Qiita
https://www.techscore.com/blog/2014/12/10/technical_debt/
將SOLID應用於機器學習
單一職責原則(SRP)
-
糾結(entanglement)
CACE原則(Changing Anything Changes Everything)......何かを変えると全てが変わる,つまり1つの変更により色々変更されてしまう。
-
黏合式碼(glue code)
プログラムの要求仕様の実現には一切寄与しないが、もともと互換性がない部分同士を結合するためだけに働くコードのこと。(Wikipediaより)
開放/封閉原則(OCP)
-
隱藏回饋循環(Hidden feedback loops)
例:預測性警務(predictive policing)
里氏替換原則(LSP)
-
未充分利用的資料相依性(Underutilized data dependencies)
不要なパッケージの累積に繋がる。
介面隔離原則(ISP)
-
未宣告的使用者 / 可見性負債(Undeclared consumers / visibility debt)
知らないところで機械学習の予測が使われる。
-
不穩定資料相依性(Unstable data dependencies)
時間経過により変化するものは,入力変数として不安定。
相依性反轉原則(DIP)
-
管道叢林(Pipeline jungles)
-
實驗路徑(Experimental paths)
複雜但並非不可能的機器學習程式
省略。
TDD:科學方法2.0
成功的秘訣是:針對機器學習專案,使用SOLID檢查清單,TDD工具以及重構作業實現。(p13)
単語
- 針對:〜に対処して,〜において
意訳
「成功の秘訣は、機械学習プロジェクトにおいて,SOLIDチェックリスト、TDDツール、およびリファクタリングの割り当てを使用することである。」
重構知識之路
省略。
本書的預期
#1の続きより。
機器學習是一個令人著迷的尃業領域,可以實現很多的需求,但如果缼少紀律,檢查清單與指引,則許多的機器學習專案注定 要面臨失敗。(p13)
単語
- 著迷:夢中,魅了する
- 可以:〜できる
- 如果:もし〜なら
- 注定:〜することとなる,運命付けられている
- 要:〜したい,〜しなければならない,〜のはずである,...
意訳
「機械学習は多くのニーズを満たすことができる魅力的な実践分野であるが、ルールやチェックリストやガイドラインが欠けていると、多くの分野で失敗するおそれがある。」
次回↓