google机器学习速成课程
特征工程
良好特征的特点:
- 避免使用很少使用的离散特征值,良好的特征值应该出现5次以上
- 最好具有清晰明确的含义
- 不要将”神奇“的值域实际数据混为一谈,即不包含超出范围的异常值
- 考虑上游不稳定,即特征的定义不随时间变化
数据缩放:
- [min,max]
- (value-mean)/stddev
处理离群值:
- 取对数
- 限制最大值
- 分段或分箱
数据清理:
- 遗漏值
- 重复样本
- 不良标签
- 不良特征值
奥卡姆剃刀:如无必要,勿增实体,切勿浪费较多东西去做,用较少的东西,同样可以做好的事情
机器学习领域:可以通过降低复杂模型的复杂度来防止过拟合,称之为正则化
结构风险最小化
执行 L2 正则化对模型具有以下影响
- 使权重值接近于 0(但并非正好为 0)
- 使权重的平均值接近于 0,且呈正态(钟形曲线或高斯曲线)分布。
-
在选择 lambda 值时,目标是在简单化和训练数据拟合之间达到适当的平衡:
如果您的 lambda 值过高,则模型会非常简单,但是您将面临数据欠拟合的风险。您的模型将无法从训练数据中获得足够的信息来做出有用的预测。
如果您的 lambda 值过低,则模型会比较复杂,并且您将面临数据过拟合的风险。您的模型将因获得过多训练数据特点方面的信息而无法泛化到新数据。
造成预测偏差的可能原因包括:
- 特征集不完整
- 数据集混乱
- 模型实现流水线中有错误?
- 训练样本有偏差
- 正则化过强
L1 和 L2 正则化。
L2 和 L1 采用不同的方式降低权重:
- L2 会降低权重2。
- L1 会降低 |权重|。
因此,L2 和 L1 具有不同的导数:
- L2 的导数为 2 * 权重。
- L1 的导数为 k(一个常数,其值与权重无关)。
神经网络是更复杂版本的特征组合。实质上,神经网络会学习适合您的相应特征组合。
常常用于解决非线性分类问题,通过线性隐藏层加上非线性的**函数,多层非线性模型的叠加建模
反向传播算法是最常见的一种神经网络训练算法。借助这种算法,梯度下降法在多层神经网络中将成为可行方法。
失败案例
很多常见情况都会导致反向传播算法出错。
梯度消失
较低层(更接近输入)的梯度可能会变得非常小。在深度网络中,计算这些梯度时,可能涉及许多小项的乘积。
当较低层的梯度逐渐消失到 0 时,这些层的训练速度会非常缓慢,甚至不再训练。
ReLU **函数有助于防止梯度消失。
梯度爆炸
如果网络中的权重过大,则较低层的梯度会涉及许多大项的乘积。在这种情况下,梯度就会爆炸:梯度过大导致难以收敛。
批标准化可以降低学习速率,因而有助于防止梯度爆炸。
ReLU 单元消失
一旦 ReLU 单元的加权和低于 0,ReLU 单元就可能会停滞。它会输出对网络输出没有任何贡献的 0 **,而梯度在反向传播算法期间将无法再从中流过。由于梯度的来源被切断,ReLU 的输入可能无法作出足够的改变来使加权和恢复到 0 以上。
降低学习速率有助于防止 ReLU 单元消失。
丢弃正则化
这是称为丢弃的另一种形式的正则化,可用于神经网络。其工作原理是,在梯度下降法的每一步中随机丢弃一些网络单元。丢弃得越多,正则化效果就越强:
- 0.0 = 无丢弃正则化。
- 1.0 = 丢弃所有内容。模型学不到任何规律。
- 0.0 和 1.0 之间的值更有用。
多类别神经网络
Softmax 将这一想法延伸到多类别领域。也就是说,在多类别问题中,Softmax 会为每个类别分配一个用小数表示的概率。这些用小数表示的概率相加之和必须是 1.0。与其他方式相比,这种附加限制有助于让训练过程更快速地收敛。
Softmax 选项
请查看以下 Softmax 变体:
完整 Softmax 是我们一直以来讨论的 Softmax;也就是说,Softmax 针对每个可能的类别计算概率。
候选采样指 Softmax 针对所有正类别标签计算概率,但仅针对负类别标签的随机样本计算概率。例如,如果我们想要确定某个输入图片是小猎犬还是寻血猎犬图片,则不必针对每个非狗狗样本提供概率。
类别数量较少时,完整 Softmax 代价很小,但随着类别数量的增加,它的代价会变得极其高昂。候选采样可以提高处理具有大量类别的问题的效率。
一个标签与多个标签
Softmax 假设每个样本只是一个类别的成员。但是,一些样本可以同时是多个类别的成员。对于此类示例:
- 您不能使用 Softmax。
- 您必须依赖多个逻辑回归。
例如,假设您的样本是只包含一项内容(一块水果)的图片。Softmax 可以确定该内容是梨、橙子、苹果等的概率。如果您的样本是包含各种各样内容(几碗不同种类的水果)的图片,您必须改用多个逻辑回归。
嵌套是一种相对低维的空间,您可以将高维矢量映射到这种低维空间里。通过使用嵌套,可以让在大型输入(比如代表字词的稀疏矢量)上进行机器学习变得更加容易。在理想情况下,嵌套可以将语义上相似的不同输入映射到嵌套空间里的邻近处,以此来捕获输入的语义。一个模型学习到的嵌套,也可以被其他模型重用。
嵌套的应用:协同过滤,分类
Embedding在数学上表示一个maping: , 也就是一个function。
其中该函数满足两个性质:
- injective (单射的):就是我们所说的单射函数,每个Y只有唯一的X对应;
- structure-preserving(结构保存):比如在X所属的空间上
,那么映射后在Y所属空间上同理
。
那么对于word embedding, 就是找到一个映射(函数)将单词(word)映射到另外一个空间(其中这个映射具有injective和structure-preserving的特点), 生成在一个新的空间上的表达,该表达就是word representation.
PCA主成分分析是一种标准的降维技术
从广义上讲,训练模型的方式有两种:
- 静态模型采用离线训练方式。也就是说,我们只训练模型一次,然后使用训练后的模型一段时间。
- 动态模型采用在线训练方式。也就是说,数据会不断进入系统,我们通过不断地更新系统将这些数据整合到模型中。
您可以选择以下任一推理策略:
- 离线推理,指的是使用 MapReduce 或类似方法批量进行所有可能的预测。然后,将预测记录到 SSTable 或 Bigtable 中,并将它们提供给一个缓存/查询表。
- 在线推理,指的是使用服务器根据需要进行预测。
静态推理与动态推理 (Static vs. Dynamic Inference)
您可以选择以下任一推理策略:
- 离线推理,指的是使用 MapReduce 或类似方法批量进行所有可能的预测。然后,将预测记录到 SSTable 或 Bigtable 中,并将它们提供给一个缓存/查询表。
- 在线推理,指的是使用服务器根据需要进行预测。
视频讲座总结
以下是离线推理的优缺点:
- 优点:不需要过多担心推理成本。
- 优点:可以使用批量方法或某些巨型 MapReduce 方法。
- 优点:可以在推送之前对预测执行后期验证。
- 缺点:只能对我们知晓的数据进行预测,不适用于存在长尾的情况。
- 缺点:更新可能延迟数小时或数天。
以下是在线推理的优缺点:
- 优点:可在新项目加入时对其进行预测,非常适合存在长尾的情况。
- 缺点:计算量非常大,对延迟较为敏感,可能会限制模型的复杂度。
- 缺点:监控需求更多。
下面简要说明了有效的机器学习准则:
- 确保第一个模型简单易用。
- 着重确保数据管道的正确性。
- 使用简单且可观察的指标进行训练和评估。
- 拥有并监控您的输入特征。
- 将您的模型配置视为代码:进行审核并记录在案。
- 记下所有实验的结果,尤其是“失败”的结果。
https://developers.google.cn/machine-learning/rules-of-ml/