通过学习文章,我学到了一些新的知识。
一、线性模型的基本概念
1. 线性模型是将输入的特征x乘上一个权重,再加上一个偏置就得到预测结果的模型。
2. 例如,最初的模型为y = b + wx_1,其中x_1代表前一天的观看人次。
二、线性模型的改进
1. 观察数据发现每隔7天有一个循环,因此修改模型为,考虑了前7天的观看人次。
2. 进一步考虑更多天,如考虑28天的模型为,在训练数据上损失更小。
3. 但考虑更多天无法再降低在未看过数据上的损失,似乎达到了极限。
三、线性模型的局限性与解决方案
1. 线性模型过于简单,无法模拟x1跟y中间复杂的关系,如分段线性曲线或其他复杂曲线。
2. 为解决此问题,引入Hard Sigmoid函数和Sigmoid函数来逼近复杂曲线。
3. 通过调整Sigmoid函数的参数(b、w和c),可以制造不同形状的Sigmoid函数,进而逼近各种分段线性函数和连续函数。
4. 可以使用多个特征代入不同的c、b、w,组合出更有灵活性的函数。
四、梯度下降与参数优化
1. 在优化过程中,使用梯度下降来找出可以让损失最低的参数。
2. 当参数较少时,可以穷举所有可能的参数值;但参数多时,需使用梯度下降。
3. 定义损失函数为L(θ),其中θ统设所有的参数。 4. 梯度下降的过程为:随机选取初始值θ0,计算梯度g = ∇L(θ0),然后根据梯度更新参数θ1 = θ0 - ηg,以此类推。
5. 实际使用梯度下降时,会将数据分成批量(batch),每个批量包含若干笔数据。每次用一个批量的数据计算损失L,根据L计算梯度,再用梯度更新参数。
6. 把所有批量都看过一次称为一个回合(epoch),每一次更新参数叫做一次更新。
五、模型变形与激活函数
1. Hard Sigmoid可以看作是两个修正线性单元(ReLU)的加总,将Sigmoid的地方换成max(0, b + wx)即可使用ReLU。
2. Sigmoid或ReLU称为激活函数,常见的激活函数还有其他,但Sigmoid和ReLU最常见。
3. 实验中使用更多的ReLU可以制造更复杂的曲线,降低训练数据上的损失,但在未看过的数据上的损失可能不会变化。
六、深度学习与神经网络
1. 许多的神经元称为神经网络,每一排神经元称为一层,称为隐藏层,很多隐藏层就“深”,这套技术称为深度学习。
2. 随着神经网络层数的增加,错误率会降低,但可能会出现过拟合问题,即在训练数据上表现好,在未看过的数据上表现差。
3. 深度学习的训练会用到反向传播(BP),它是一种更有效率计算梯度的方法。
七、机器学习框架的步骤
1. 写出一个有未知数θ的函数$f_θ(x)$,输入特征为x。
2. 定义损失函数,判断参数的好坏
3. 解优化问题,找到使损失最小的θ
4. 将θ*带入测试集,输出结果并上传到Kaggle。
在遇到问题时要学习搭建机器学习框架,可以用一些函数来解决问题。