Swift機器學習:面向iOS的人工智能實戰
內容描述
一本書理解Swift和機器學習,掌握構建智能iOS應用方法利用Swift與Core ML構建和部署機器學習模型,
開發出用於NLP和CV的神經網絡
1.學會如何使用Python和Swift快速進行模型原型開發
2.學會如何使用Core ML將預訓練的模型部署到iOS
3.學會通過無監督學習發現數據中隱藏的模式
4.學會深入掌握聚類技術
5.學會如何在iOS設備上應用緊湊架構的神經網絡
6.學會如何訓練神經網絡進行圖像處理和自然語言處理
本書是機器學習和Swift的完美指南,通過學習對機器學習原理和Swift實現方法、實際案例的詳細講解後,
你將能夠掌握如何開發使用Swift編寫的可自學習的智能iOS應用程序。
本書適合想要開發iOS智能應用程序的iOS技術人員,以及從事基於Swift開展機器學習工作的開發人員閱讀
目錄大綱
譯者序
原書前言
關於作者
關於評審者
章機器學習入門1
1.1什麼是人工智能1
1.2機器學動機2
1.3什麼是機器學習3
1.4機器學應用3
1.4.1數字信號處理4
1.4.2計算機視覺4
1.4.3自然語言處理4
1.4.4機器學其他應用5
1.5利用機器學習構建iOS智能應用程序5
1.6了解數據6
1.6.1特徵7
1.6.2特徵類型7
1.6.3選擇適當的特徵集8
1.獲取數據集9
1.6.5數據預處理10
1.7模型選擇10
1.7.1機器學習算法類型10
1.7.2監督學習11
1.7.3無監督學習12
1.7.4強化學習13
1.7.5數學優化-學工作原理13
1.7.6移動端與服務器端的機器學習14
1.7.7了解移動平台的局限性15
1.8小結16
參考文獻16
第2章分類-決策樹學習17
2.1機器學習工具箱17
2.2個機器學習應用程序原型18
2.2.1工具19
2.2.2設置機器學習環境19
2.3IPythonnotebook速成21
2.4實踐練習22
2.5用於“外星生命探索器”的機器學習23
2.6加載數據集24
2.7探索性數據分析25
2.8數據預處理28
2.8.1轉換分類變量28
2.8.2從標籤提取特徵29
2.8.3獨熱編碼29
2.8.4數據拆分30
2.9無處不在的決策樹30
2.10訓練決策樹分類器30
2.10.1決策樹可視化31
2.10.2預測33
2.10.3預測準確率評估33
2.10.4超參數調節35
2.10.5理解模型容量的權衡35
2.11決策樹學工作原理36
2.11.1由數據自動生成決策樹37
2.11.2組合熵37
2.11 .3根據數據評估模型性能38
2.12在Swift中實現個機器學習應用程序42
2.13CoreML簡介42
2.13.1CoreML特徵42
2.13.2導出iOS模型42
2.13.3集成學習隨機森林44
2.13.4訓練隨機森林44
2.13.5隨機森林準確率評估44
2.13.6將CoreML模型導入iOS項目45
2.13.7iOS模型性能評估47
2.13.8決策樹學優缺點50
2.14小結50
第3章k近鄰分類器52
3.1距離計算52
3.1.1動態時間規整54
3.1. 2在Swift中實現DTW56
3.2利用基於實例的模型進行分類和聚類58
3.3基於慣性傳感器的人體運動識別59
3.4理解KNN算法59
3.4.1在Swift中實現KNN61
3.5基於KNN識別人體運動62
3.5.1冷啟動問題63
3.5.2平衡數據集65
3.5.3選擇適當的k值65
3.6高維空間中的推理66
3.7KNN的優點67
3.8KNN的缺點67
3.9改進的解決方案67
3.9.1概率解釋67
3.9.2更多數據源68
3.9.3更智能的時間序列塊68
3.9.4硬件加速68
3.9.5加速推理的決策樹68
3.9.6利用狀態遷移68
3.10小結68
參考文獻69
第4章k -均值聚類70
4.1無監督學習70
4.2k-均值聚類算法概述71
4.3在Swift中實現k-均值72
4.3.1更新步驟74
4.3.2分配步驟74
4.4聚類地圖中的對象75
4.5聚類個數選擇77
4.6k-均值聚類-問題78
4.7k-均值++79
4.8基於k-均值算法的圖像分割82
4.9小結83
第5章關聯規則學習84
5.1查看關聯規則84
5.2定義數據結構85
5.3利用關聯測度進行規則評估86
5.3.1支持度關聯測度87
5.3.2置信度關聯測度88
5.3.3提升度關聯測度89
5.3.4確信度關聯測度90
5.4問題分解90
5.5生成所有可能的規則90
5.6查找頻繁項集91
5.7Apriori算法92
5.8Swift中的Apriori算法實現93
5.9運行Apriori算法94
5.10在實際數據上運行Apriori算法95
5.11Apriori算法的優缺點96
5.12建立適應性強的用戶體驗96
5.13小結97
參考文獻98
第6章線性回歸和梯度下降99
6.1了解回歸任務99
6.2簡單線性回歸簡介100
6.2.1利用小二乘法擬合回歸線102
6.2.2利用簡單線性回歸預測未來105
6.3特徵縮放106
特徵標準化107
.1多元線性回歸109
6.5在Swift中實現多元線性回歸109
6.5.1多元線性回歸的梯度下降111
6.5.2特徵標準化115
6.5.3理解並改善線性回歸的局限性117
6.6利用正則化解決線性回歸問題120
6.6.1嶺回歸和Tikhonov正則化120
6.6.2彈性網回歸121
6.7小結121
參考文獻122
第7章線性分類器和邏輯回歸123
7.1回顧分類任務123
7.1.1線性分類器123
7.1.2邏輯回歸124
7.2Swift中的邏輯回歸實現125
7.2.1邏輯回歸中的預測部分126
7.2 .2訓練邏輯回歸127
7.2.3成本函數128
7.3預測用戶意圖130
7.3.1處理日期130
7.4針對具體問題選擇回歸模型131
7.5偏差-方差權衡131
7.6小結132
第8章神經網絡133
8.1究竟什麼是人工神經網絡134
8.2構建神經元134
8.2.1非線性函數135
8.3構建神經網絡138
8.4在Swift中構建一個神經網絡層138
8.5利用神經元構建邏輯函數139
8.6在Swift中實現層140
8.7訓練神經網絡141
8.7.1梯度消失問題141
8.7 .2與生物類比141
8.8基本神經網絡子程序142
8.8.1BNNS示例143
8.9小結145
第9章卷積神經網絡146
9.1理解用戶情感146
9.2計算機視覺問題概述147
9.3卷積神經網絡概述149
9.4池化操作149
9.5卷積運算150
9.5.1CNN中的捲積運算152
9.6構建網絡153
9.6.1輸入層155
9.6.2卷積層155
9.6.3全連接層156
9.非線性層156
9.6.5池化層156
9.6.6正則化層156
9.7損失函數157
9.8批量訓練網絡157
9.9訓練用於面部表情識別的CNN158
9.10環境設置158
9.11深度學習框架159
9.11.1Keras159
9.12加載數據160
9.13拆分數據161
9.14數據擴充162
9.15創建網絡163
9.16繪製網絡結構165
9.17訓練網絡167
9.18繪製損失值167
9.19預測168
9.20以HDF5格式保存模型169
9.21轉換為CoreML格式169
9.22可視化卷積濾波器170
9.23在iOS上部署CNN171
9.24小結173
參考文獻174
10章自然語言處理175
10.1移動開發領域中的NLP175
10.2文字聯想遊戲176
10.3PythonNLP庫178
10.4文本語料178
10.5常用NLP方法和子任務179
10.5 .1標記分割179
10.5.2詞幹提取181
10.5.3詞形還原182
10.5.4詞性標註182
10.5.5命名實體識別184
10.5.6刪除停止詞和標點符號185
10.6分佈式語義假設186
10.7詞向量表示186
10.8自編碼器神經網絡187
10.9Word2Vec187
10.10Gensim中的Word2Vec190
10.11向量空間特性190
10.12iOS應用程序191
10.12.1聊天機器人剖析191
10.12.2語音輸入192
10.12.3NSLinguisticTagger及其相關193
10.12.4iOS上的Word2Vec195
10.12.5文本-語音輸出196
10.12 .6UIReferenceLibraryViewController197
10.12.7集成197
10.13Word2Vec的各種相關算法199
10.14發展趨勢200
10.15小結200
11章機器學習庫201
11.1機器學習和人工智能API201
11.2庫202
11.3通用機器學習庫202
11.3.1AIToolbox204
11.3.2BrainCore205
11.3.3Caffe205
11.3.4Caffe2205
11.3.5dlib206
11.3.6FANN206
11.3.7LearnKit206
11.3.8MLKit206
11.3.9ltilinear-math207
11.3.10MXNet207
11.3.11Shark207
11.3.12TensorFlow207
11.3.13tiny-dnn208
11.3.14Torch208
11.3.15YCML209
11.4僅用於推理的庫209
11.4.1Keras210
11.4.2LibSVM210
11.4.3Scikit-learn210
11.4.4XGBoost210
11.5NLP庫211
11.5.1Word2Vec211
11.5.2Twitter文本211
11.6語音識別211
11.6.1TLSphinx211
11.6.2OpenEars211
11.7計算機視覺212
11.7.1OpenCV212
11.7.2ccv212
11.7.3OpenFace212
11.7.4Tesseract213
11.8底層子程序庫213
11.8.1Eigen213
11.8.2fmincg-c213
11.8.3IntuneFeatures214
11.8.4SigmaSwiftStatistics214
11.8.5STEM214
11.8.6Swix214
11.8.7LibXtract214
11.8.8libLBFGS215
11.8.9NNPACK215
11.8.10Upsurge215
11.8.11YCMatrix215
11.9選擇深度學習框架216
11.10小結216
12章優化移動設備上的神經網絡217
12.1提供的用戶體驗217
12.2計算卷積神經網絡規模218
12.3無損壓縮220
12.4緊湊型CNN架構221
12.4.1SqueezeNet221
12.4.2MobileNet221
12.4.3ShuffleNet222
12.4.4CondenseNet222
12.5防止神經網絡擴大222
12.6有損壓縮223
12.6.1推理優化224
12.7網絡壓縮示例226
12.8小結226
參考文獻226
13章佳實踐227
13.1移動平台機器學習項目的生命週期227
13.1.1準備階段227
13.1.2創建原型230
13.1.3移植或部署到移動平台233
13.1.4實際應用234
13.2佳實踐指南234
13.2.1基準測試234
13.2.2隱私和差異化隱私235
13.2.3調試和可視化236
13.2.4歸檔236
13.3機器學習問題237
13.3.1數據怪物237
13.3.2訓練問題238
13.3.3產品設計噩夢238
13.4學習資源推薦240
13.4.1數學基本知識241
13.5小結242
作者介紹
Alexander Sosnovshchenko
自2012年擔任iOS軟件工程師之後開始進行數據科學研究,
如從移動機器學習實驗到用於視頻監控數據異常檢測的複雜深度學習方案。
現與妻子和女兒居住在烏克蘭的利沃夫。
在此要感謝DmitriiVorona的支持、寶貴建議和代碼檢查;
感謝Nikolay Sosnovshchenko和Oksana Matskovich提供的有關生物和機器人的圖片;
感謝David Kopec和Matthijs Hollemans提供的開源項目,感謝作為叢書作者和評審人的JojoMoolayil先生對本書的付出,
以及我的家人的支持和理解。