一本书理解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
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.6.4 获取数据集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.3 IPython notebook速成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.13 CoreML简介42
2.13.1 CoreML特征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.7 iOS模型性能评估47
2.13.8 决策树学习的优缺点50
2.14 小结50
第3章 k近邻分类器52
3.1 距离计算52
3.1.1 动态时间规整54
3.1.2 在Swift中实现DTW 56
3.2 利用基于实例的模型进行分类和聚类58
3.3 基于惯性传感器的人体运动识别59
3.4 理解KNN算法59
3.4.1 在Swift中实现KNN 61
3.5 基于KNN识别人体运动62
3.5.1 冷启动问题63
3.5.2 平衡数据集65
3.5.3 选择适当的k值65
3.6 高维空间中的推理66
3.7 KNN的优点67
3.8 KNN的缺点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.2 k-均值聚类算法概述71
4.3 在Swift中实现k-均值72
4.3.1 更新步骤74
4.3.2 分配步骤74
4.4 聚类地图中的对象75
4.5 聚类个数选择77
4.6 k-均值聚类-问题78
4.7 k-均值++ 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.7 Apriori算法92
5.8 Swift中的Apriori算法实现93
5.9 运行Apriori算法94
5.10 在实际数据上运行Apriori算法95
5.11 Apriori算法的优缺点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
6.4 特征标准化107
6.4.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.2 Swift中的逻辑回归实现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.1 BNNS示例143
8.9 小结145
第9章 卷积神经网络146
9.1 理解用户情感146
9.2 计算机视觉问题概述147
9.3 卷积神经网络概述149
9.4 池化操作149
9.5 卷积运算150
9.5.1 CNN中的卷积运算152
9.6 构建网络153
9.6.1 输入层155
9.6.2 卷积层155
9.6.3 全连接层156
9.6.4 非线性层156
9.6.5 池化层156
9.6.6 正则化层156
9.7 损失函数157
9.8 批量训练网络157
9.9 训练用于面部表情识别的CNN 158
9.10 环境设置158
9.11 深度学习框架159
9.11.1 Keras 159
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上部署CNN 171
9.24 小结173
参考文献174
第10章 自然语言处理175
10.1 移动开发领域中的NLP 175
10.2 文字联想游戏176
10.3 Python NLP库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.9 Word2Vec 187
10.10 Gensim中的Word2Vec 190
10.11 向量空间特性190
10.12 iOS应用程序191
10.12.1 聊天机器人剖析191
10.12.2 语音输入192
10.12.3 NSLinguisticTagger及其相关193
10.12.4 iOS上的Word2Vec 195
10.12.5 文本-语音输出196
10.12.6 UIReferenceLibraryViewController 197
10.12.7 集成197
10.13 Word2Vec的各种相关算法199
10.14 发展趋势200
10.15 小结200
第11章 机器学习库201
11.1 机器学习和人工智能API 201
11.2 库202
11.3 通用机器学习库202
11.3.1 AIToolbox 204
11.3.2 BrainCore 205
11.3.3 Caffe 205
11.3.4 Caffe2 205
11.3.5 dlib 206
11.3.6 FANN 206
11.3.7 LearnKit 206
11.3.8 MLKit 206
11.3.9 Multilinear-math 207
11.3.10 MXNet 207
11.3.11 Shark 207
11.3.12 TensorFlow 207
11.3.13 tiny-dnn 208
11.3.14 Torch 208
11.3.15 YCML 209
11.4 仅用于推理的库209
11.4.1 Keras 210
11.4.2 LibSVM 210
11.4.3 Scikit-learn 210
11.4.4 XGBoost 210
11.5 NLP库211
11.5.1 Word2Vec 211
11.5.2 Twitter文本211
11.6 语音识别211
11.6.1 TLSphinx 211
11.6.2 OpenEars 211
11.7 计算机视觉212
11.7.1 OpenCV 212
11.7.2 ccv 212
11.7.3 OpenFace 212
11.7.4 Tesseract213
11.8 底层子程序库213
11.8.1 Eigen 213
11.8.2 fmincg-c 213
11.8.3 IntuneFeatures 214
11.8.4 SigmaSwiftStatistics 214
11.8.5 STEM 214
11.8.6 Swix 214
11.8.7 LibXtract 214
11.8.8 libLBFGS 215
11.8.9 NNPACK 215
11.8.10 Upsurge 215
11.8.11 YCMatrix 215
11.9 选择深度学习框架216
11.10 小结216
第12章 优化移动设备上的神经网络217
12.1 提供完美的用户体验217
12.2 计算卷积神经网络规模218
12.3 无损压缩220
12.4 紧凑型CNN架构221
12.4.1 SqueezeNet 221
12.4.2 MobileNet 221
12.4.3 ShuffleNet 222
12.4.4 CondenseNet 222
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