第 1章 人工智能导论 1 1.1 什么是人工智能 1 1.2 图灵测试 3 1.2.1 图灵测试的定义 3 1.2.2 询问者测试 4 1.3 启发式方法 4 1.4 知识表示 5 1.4.1 基于逻辑的解决方案 5 1.4.2 语义网络 6 1.5 人工智能和博弈 6 1.6 专家系统 7 1.7 神经计算 8 1.8 演化计算 8 1.9 自然语言处理 9 1.10 生物信息学 10 1.11 人工智能的主要部分 11 1.11.1 机器学习 11 1.11.2 深度学习 11 1.11.3 强化学习 12 1.11.4 机器人学 12 1.11.5 自然语言处理 12 1.12 代码示例 13 1.13 总结 13 第 2章 机器学习概述 14 2.1 什么是机器学习 14 2.2 机器学习算法的类型 16 2.3 特征工程、特征选择和特征提取 18 2.4 降维 19 2.4.1 PCA 19 2.4.2 协方差矩阵 20 2.5 使用数据集 20 2.5.1 训练数据与测试数据 20 2.5.2 什么是交叉验证 20 2.6 什么是正则化 21 2.6.1 机器学习和特征缩放 21 2.6.2 数据归一化与标准化 21 2.7 偏差-方差权衡 21 2.8 模型的度量指标 22 2.8.1 R2的局限性 22 2.8.2 混淆矩阵 22 2.8.3 准确率、**率、召回率 22 2.8.4 ROC曲线 23 2.9 其他有用的统计学术语 23 2.9.1 F1值是什么 24 2.9.2 p值是什么 24 2.10 什么是线性回归 24 2.10.1 线性回归与曲线拟合 25 2.10.2 什么时候解是**值 25 2.10.3 什么是多元分析 25 2.11 其他类型的回归 26 2.12 使用平面中的线(可选) 26 2.13 用NumPy和matplotlib画散点图(1) 28 2.14 用NumPy和matplotlib画散点图(2) 30 2.15 用NumPy和matplotlib画二次散点图 30 2.16 MSE公式 31 2.16.1 误差类型列表 32 2.16.2 非线性*小二乘法 32 2.17 手动计算MSE 32 2.18 用np.linspace() API近似线性数据 34 2.19 用np.linspace() API计算MSE 34 2.20 用Keras进行线性回归 36 2.21 总结 38 第3章 机器学习分类器 40 3.1 什么是分类 40 3.1.1 什么是分类器 40 3.1.2 常见的分类器 41 3.1.3 二元分类与多类别分类 41 3.1.4 多标签分类 42 3.2 什么是线性分类器 42 3.3 什么是kNN 42 3.4 什么是决策树 43 3.5 什么是随机森林 46 3.6 什么是SVM 46 3.7 什么是贝叶斯推理 47 3.7.1 贝叶斯定理 47 3.7.2 一些贝叶斯术语 48 3.7.3 什么是*大后验假设 48 3.7.4 为什么使用贝叶斯定理 48 3.8 什么是朴素贝叶斯分类器 48 3.9 训练分类器 49 3.10 评估分类器 49 3.11 什么是激活函数 50 3.11.1 为什么需要激活函数 51 3.11.2 激活函数是如何工作的 51 3.12 常见的激活函数 51 3.12.1 Python中的激活函数 52 3.12.2 Keras中的激活函数 53 3.13 ReLU和ELU激活函数 53 3.13.1 ReLU激活函数 53 3.13.2 ELU激活函数 54 3.14 Sigmoid、Softmax、Softplus和tanh激活函数的相似性 54 3.14.1 Sigmoid激活函数 54 3.14.2 Softmax激活函数 54 3.14.3 Softplus激活函数 54 3.14.4 tanh激活函数 54 3.15 Sigmoid、Softmax和Hardmax激活函数之间的差异 55 3.16 什么是逻辑斯谛回归 55 3.16.1 设置阈值 55 3.16.2 逻辑斯谛回归:重要假设 56 3.16.3 线性可分数据 56 3.17 Keras、逻辑斯谛回归和Iris数据集 56 3.18 总结 58 第4章 深度学习概述 59 4.1 Keras和异或函数XOR 59 4.2 什么是深度学习 61 4.2.1 什么是超参数 62 4.2.2 深度学习体系架构 62 4.2.3 深度学习所能解决的问题 63 4.2.4 未来的挑战 63 4.3 什么是感知器 63 4.3.1 感知器函数的定义 64 4.3.2 感知器的详细视图 64 4.4 人工神经网络剖析 65 4.4.1 初始化模型的超参数 66 4.4.2 激活函数 66 4.4.3 损失函数 66 4.4.4 优化器 66 4.4.5 学习率 67 4.4.6 丢弃率 67 4.5 什么是反向误差传播 67 4.6 什么是多层感知器 67 4.7 数据点是如何被正确分类的 68 4.8 CNN的高阶视图 69 4.8.1 一个极简的CNN 70 4.8.2 卷积层 70 4.8.3 ReLU激活函数 70 4.8.4 *大池化层 70 4.9 在MNIST数据集上显示图像 71 4.10 Keras和MNIST数据集 72 4.11 Keras、CNN和MNIST数据集 73 4.12 用CNN分析音频信号 75 4.13 总结 76 第5章 深度学习体系架构:RNN和 LSTM 77 5.1 什么是RNN 77 5.1.1 RNN剖析 78 5.1.2 什么是BPTT 78 5.2 在Keras中使用RNN 79 5.3 在Keras中使用RNN和MNIST数据集 80 5.4 在TensorFlow中使用RNN(可选) 81 5.5 什么是LSTM 83 5.5.1 LSTM剖析 83 5.5.2 双向LSTM 84 5.5.3 LSTM公式 84 5.5.4 LSTM超参数调优 85 5.6 在TensorFlow中使用LSTM(可选) 85 5.7 什么是GRU 87 5.8 什么是自动编码器 87 5.8.1 自动编码器和主成分分析 88 5.8.2 什么是可变自动编码器 89 5.9 什么是GAN 89 5.10 创建GAN 90 5.11 总结 92 第6章 自然语言处理和强化学习 93 6.1 使用NLP 93 6.1.1 NLP技术 94 6.1.2 Transformer架构和NLP 94 6.1.3 Transformer-XL架构 95 6.1.4 Reformer架构 95 6.1.5 NLP和深度学习 95 6.1.6 NLP中的数据预处理任务 95 6.2 流行的NLP算法 95 6.2.1 什么是n-gram 96 6.2.2 什么是skip-gram 96 6.2.3 什么是词袋 96 6.2.4 什么是词频 97 6.2.5 什么是反文档频率 97 6.2.6 什么是TF-IDF 98 6.3 什么是词嵌入 98 6.4 ELMo、ULMFit、OpenAI、BERT和ERNIE 2.0 98 6.5 什么是Translatotron 99 6.6 深度学习和NLP 100 6.7 NLU与NLG 100 6.8 什么是强化学习 101 6.8.1 强化学习的应用 101 6.8.2 NLP与强化学习 102 6.8.3 强化学习中的价值、策略和模型 102 6.9 从NFA到MDP 103 6.9.1 什么是NFA 103 6.9.2 什么是马尔可夫链 103 6.9.3 马尔可夫决策过程 104 6.10 epsilon贪心算法 104 6.11 贝尔曼方程 105 6.12 强化学习工具包和框架 106 6.13 什么是深度强化学习 107 6.14 总结 108 附录A Keras简介 109 A.1 什么是Keras 109 A.1.1 在TF 2中使用Keras命名空间 109 A.1.2 使用tf.keras.layers命名空间 110 A.1.3 使用tf.keras.activations命名空间 110 A.1.4 使用tf.keras.datasets命名空间 111 A.1.5 使用tf.keras.experimental命名空间 111 A.1.6 使用tf.keras中的其他命名空间 112 A.1.7 TF 2 Keras与“独立”Keras 112 A.2 创建基于Keras的模型 112 A.3 Keras和线性回归 114 A.4 Keras、MLP和MNIST数据集 115 A.5 Keras、CNN和cifar10数据集 117 A.6 在Keras中调整图像大小 119 A.7 Keras和提前停止(1) 120 A.8 Keras和提前停止(2) 121 A.9 Keras模型的度量指标 123 A.10 保存和恢复Keras模型 123 A.11 总结 125 附录B TF 2简介 126 B.1 什么是TF 2 126 B.1.1 TF 2用例 127 B.1.2 TF 2架构 128 B.1.3 TF 2安装 128 B.1.4 TF 2和Python的REPL 129 B.2 其他基于TF 2的工具包 129 B.3 TF 2即时执行 130 B.4 TF 2张量、数据类型和原始类型 130 B.4.1 TF 2数据类型 130 B.4.2 TF 2原始类型 131 B.5 TF 2中的常量 131 B.6 TF 2中的变量 132 B.7 tf.rank() API 133 B.8 tf.shape() API 134 B.9 TF 2中的变量(重新审视) 135 B.10 TF 2中的@tf.function是什么 136 B.10.1 @tf.function如何工作 136 B.10.2 TF 2中@tf.function的注意事项 137 B.10.3 tf.print()函数和标准错误 138 B.11 在TF 2中使用@tf.function 138 B.11.1 一个未使用@tf.function 的例子 138 B.11.2 一个使用@tf.function 的例子 139 B.11.3 使用@tf.function重载函数的例子 139 B.11.4 TF 2中的AutoGraph是什么 140 B.12 TF 2中的算术运算 141 B.13 TF 2中算术运算的 注意事项 141 B.14 TF 2的内置函数 142 B.15 计算TF 2中的三角 函数值 143 B.16 计算TF 2中的指数值 144 B.17 在TF 2中使用字符串 144 B.18 在TF 2中使用带有各种张量的运算符 145 B.19 TF 2中的二阶张量(1) 146 B.20 TF 2中的二阶张量(2) 147 B.21 TF 2中两个二阶张量的 乘法 148 B.22 将Python数组转换为TF 2 张量 148 B.23 微分和TF 2中的 tf.GradientTape 149 B.24 tf.GradientTape的示例 150 B.24.1 使用tf.GradientTape 的watch()方法 150 B.24.2 将嵌套的循环用于tf.GradientTape 151 B.24.3 其他涉及tf.GradientTape的TF 2张量运算 151 B.24.4 持久的梯度磁带 152 B.25 谷歌Colaboratory 153 B.26 其他云平台 154 B.27 总结 154 附录C pandas简介 155 C.1 什么是pandas 155 C.1.1 pandas数据帧 155 C.1.2 数据帧和数据清洗任务 156 C.2 带标签的pandas数据帧 156 C.3 pandas数值数据帧 157 C.4 pandas布尔数据帧 158 C.5 pandas数据帧和随机数 159 C.6 组合pandas数据帧(1) 160 C.7 组合pandas数据帧(2) 161 C.8 pandas数据帧的数据处理(1) 161 C.9 pandas数据帧的数据处理(2) 162 C.10 pandas数据帧的数据处理(3) 163 C.11 pandas数据帧和CSV文件 164 C.12 pandas数据帧和Excel电子表格(1) 167 C.13 pandas数据帧和Excel电子表格(2) 167 C.14 读取具有不同分隔符的数据文件 168 C.15 使用sed命令转换数据(可选) 169 C.16 选择、添加和删除数据帧 中的列 171 C.17 pandas数据帧和散点图 172 C.18 pandas数据帧和直方图 173 C.19 pandas数据帧和简单统计 175 C.20 pandas数据帧的标准化 175 C.21 pandas数据帧、NumPy函数 和大型数据集 177 C.22 使用pandas序列 177 C.22.1 数据来自ndarray 178 C.22.2 来自pandas序列的 pandas数据帧 178 C.23 pandas中有用的单行命令 179 C.24 什么是Jupyter 181 C.24.1 Jupyter特性 181 C.24.2 从命令行启动Jupyter 181 C.24.3 JupyterLab 182 C.24.4 开发JupyterLab扩展 182 C.25 总结 182