google 机器学习速成课程 笔记1
程序员文章站
2022-03-31 21:15:48
...
学习谷歌的机器学习速成课程
- 标签:标签是我们要预测的事物,也就是y
- 特征:特征是输入变量,也就是x,按照如下方式指定{x1,x2,x3….,xN},合适的特征应该是具体可量化的,for example,喜欢不是可观察且可量化的指标,鞋的美观程度也不是,但是鞋码和用户点击鞋子描述的次数是一种具体可量化的指标。
- 样本:指数据的特定实例,有标签样本和无标签样本
- 模型:模型定义了特征和标签之间的联系,分为训练和推断阶段
-
分为回归和分类两大类问题。回归模型可预测连续值,分类问题预测离散值。
回归问题中的误差:
- L2正则化 平方误差 cost = D为样本
-
MSE均方误差 ,每个样本的平均平方损失 cost =
降低损失
- 梯度下降法
- 随机梯度下降法 SGD 一次抽取一个样本
-
小批量梯度下降法 小批量SGD大约10~1000
关于梯度下降,设函数f(x,y),则梯度=[x的偏导数,y的偏导数]。梯度指向函数增长速度最快的方向,负梯度指定函数下降速度最快的方向。梯度是偏导数的矢量,损失相对于单个权重的梯度就导数。
文章中的凸函数是横坐标为w,纵坐标为cost,画出该图需要给定每一个w,计算其对应的cost,这种情况下是一个凸函数,梯度下降的目标就是寻求该函数的最小值,也就是损失函数收敛的地方。
梯度下降法沿着该函数负梯度的方向下降,该方向为函数下降最快的方向,理想情况下,梯度应该是慢慢减小,最后最低点的梯度为0,函数也趋于收敛,后面函数的下降应该是比前面下降的幅度要小,然后慢慢变为0
为一个超参数,代表学习率或者步长,是一个需要调参的值。
模型收敛:总体损失不在变化或者变化缓慢
tensorflow的抽象层次
使用tensorflow.estimator API构建一个线性分类器的例子
import tensorflow as tf
#set up a linear classifier
classifier = tf.estimator.LinearClassifier()
#train the model in train_data
classifier.train(input_fn = train_input_fn,steps = 2000)
#use it to predict
predictions = classifier.predict(input_fn = predict_input_fn)
泛化 : 防止过拟合,过拟合是由于模型的复杂程度超出所需要的程度造成的
训练集、验证集、测试集
划分训练和测试集合一般采取2-8原则
ps:作业题目中我发现增大批次或者降低学习率都可以降低测试损失和训练损失的差值
验证集
为什么需验证集?
使用测试集和训练集来推动模型开发迭代的流程:在每次迭代时,我们都会对训练数据进行训练并评估测试数据,并以基于测试数据的评估结果为指导来选择和更改各种模型超参数,例如学习速率和特征。这样做会导致我们不知不觉拟合测试集合。
加入验证集后的工作流程:
上一篇: 网站 favicon 图标(★★★)