google机器学习速成课程

特征工程算法

良好特征的特色:api

  • 避免使用不多使用的离散特征值,良好的特征值应该出现5次以上
  • 最好具备清晰明确的含义
  • 不要将”神奇“的值域实际数据混为一谈,即不包含超出范围的异常值
  • 考虑上游不稳定,即特征的定义不随时间变化


数据缩放:缓存

  • [min,max]
  • (value-mean)/stddev

处理离群值:服务器

  • 取对数
  • 限制最大值
  • 分段或分箱

数据清理:网络

  • 遗漏值
  • 重复样本
  • 不良标签
  • 不良特征值

奥卡姆剃刀:如无必要,勿增实体,切勿浪费较多东西去作,用较少的东西,一样能够作好的事情机器学习

机器学习领域:能够经过下降复杂模型的复杂度来防止过拟合,称之为正则化ide

结构风险最小化函数


执行 L2 正则化对模型具备如下影响学习

  • 使权重值接近于 0(但并不是正好为 0)
  • 使权重的平均值接近于 0,且呈正态(钟形曲线或高斯曲线)分布。
  • 在选择 lambda 值时,目标是在简单化和训练数据拟合之间达到适当的平衡:google

    • 若是您的 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: f: X \rightarrow Y , 也就是一个function。

其中该函数知足两个性质:

  1. injective (单射的):就是咱们所说的单射函数,每一个Y只有惟一的X对应;
  2. structure-preserving(结构保存):好比在X所属的空间上 x_{1}\leq x_{2} ,那么映射后在Y所属空间上同理 y_{1}\leq y_{2}

那么对于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/