优化器:
1. 什么是优化器?
优化器就是在深度学习反向传播过程中,指引损失函数(目标函数)的各个参数往正确的方向更新合适的大小,使得更新后的各个参数让损失函数(目标函数)值不断逼近全局最小。
2. 优化器有哪些?
① SGD 随机梯度下降
每次从训练集中随机选择一个样本来进行学习
优点:
(1)每次只用一个样本更新模型参数,训练速度快 (2)随机梯度下降所带来的波动有利于优化的方向从当前的局部极小值点跳到另一个更好的局部极小值点,这样对于非凸函数,最终收敛于一个较好的局部极值点,甚至全局极值点。
缺点:
(1)当遇到局部最优点或鞍点时,梯度为0,无法继续更新参数
(2)沿陡峭方向震荡,而沿平缓维度进展缓慢,难以迅速收敛
② RMSprop
一种自适应学习率优化算法,通过引入一个衰减系数,让r每回合都衰减一定比例
优点:
(1)这种方法很好的解决了深度学习中过早结束的问题
(2)适合处理非平稳目标,对于RNN效果很好
缺点:
(1)又引入了新的超参,衰减系数
(2)依然依赖于全局学习速率
评估指标:
1. 什么是评估指标?
为了评估推荐算法的质量
2. 评估指标有哪些?
预测评分准确度,预测评分的准确度,衡量的是算法预测的评分与用户的实际评分的贴近程度
这针对于一些需要用户给物品评分的网站。
① 平均绝对误差(MAE)
它表示预测值和观测值之间绝对误差的平均值。
优点:MAE因其计算简单、通俗易懂得到了广泛的应用。
缺点:局限性,对MAE指标贡献比较大的往往是那种很难预测准确的低分商品。
所以即便推荐系统A的MAE值低于系统B,很可能只是由于系统A更擅长预测这部分低分商品的评分,
即系统A比系统B能更好的区分用户非常讨厌和一般讨厌的商品,显然这样区分的意义不大。
② 均方误差(RMSE)
它表示预测值和观测值之间差异(称为残差)的样本标准差。
优点:RMSE来定义损失函数是平滑可微的,且更容易进行数学运算。
缺点:更复杂且偏向更高的误差。
RMSE加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因而对系统的评测更加苛刻。
正态分布:又名高斯分布
MLP多层感知机:
人工神经网络
最典型的MLP包括包括三层:输入层、隐层和输出层,MLP神经网络不同层之间是全连接的
全连接:上一层的任何一个神经元与下一层的所有神经元都有连接)。
σ(W · x + b) x为矩阵
神经网络主要有三个基本要素:权重、偏置和激活函数
权重:神经元之间的连接强度由权重表示,权重的大小表示可能性的大小
偏置:偏置的设置是为了正确分类样本,是模型中一个重要的参数,即保证通过输入算出的输出值不能随便激活。
激活函数:起非线性映射的作用,其可将神经元的输出幅度限制在一定范围内,一般限制在(-1~1)或(0~1)之间。
最常用的激活函数是Sigmoid函数,其可将(-∞,+∞)的数映射到(0~1)的范围内(常用于二分类)。
损失函数 交叉熵
二分类交叉熵
多分类交叉熵
BPR-贝叶斯个性化排序
BPR就是一种基于pair的排序算法。
在有些推荐场景下,我们并不是想知道用户对某个商品的评分或者喜好,我们只想知道用户对某些商品的特殊偏好,如果同时出现两个商品,用户会倾向于选择哪个商品。
池化
捕获图的嵌入向量,就要进行池化
pooling的结果是使特征减少,参数减少。
pooling的目的是为了保持某种不变性(旋转、平移、伸缩等),降低特征的维度,同时提取更好的、具有更强烈的语义信息的特征
平均池化:即对邻域内特征点只求平均,可以保留背景信息 最大池化:即对邻域内特征点取最大,可以提取特征纹理。减少无用信息的影响。
互信息(mutual information, MI)
衡量两个随机变量的相关性
P-Relu
P-Relu 带参数的Relu
上下文信息
在具体的推荐场景中,用户的最终选择一般会受时间,地点,用户逇状态等一系列环境信息的影响,可称为“上下文内信息”或“场景信息”。
Monte-Carlo Dropout(蒙特卡罗 dropout)
**作用:1. 估计模型的不确定性。2. 利用不确定性训练模型。**
**蒙特卡罗dropout(MCD)已经成为一种很有前途的估计模型不确定性的方**
它重复了𝐾次有特征去除的模型推理。这样,就得到了𝐾个不同的预测,即将方差视为预测的不确定性。
直观地说,每个重复都可以通过删除部分参数来看作是模型空间上的采样。
解释:
对于一个模型的输出结果,我们想得到这个结果的方差来计算模型不确定性(认知不确定性)。而模型的参数是固定的,一个单独输出值是得不到方差的。如果说——我们能够用同一个模型,对同一个样本进行T次预测,而且这T次的预测值各不相同,就能够计算方差。
问题是同一个模型同一个样本,怎么得到不同的输出呢?我们可以让学到的模型参数不是确定的值,而是服从一个分布,那么模型参数就可以从这个分布中采样得到,每一次采样,得到的模型参数都是不同的,这样模型产生的结果也是不同的,我们的目的就达到了。
但是如何让模型的参数不是确定的而是服从一个分布呢? 现成的dropout就是,使用dropout来训练模型时,模型的参数可以看成是服从一个伯努利分布(比如dropout radio =0.5,一种说法是:这层神经元中有一半会被dropout,换种说法就是——这层的每个神经元都有0.5的概率被dropout,这就是伯努利分布)。但是我们估计模型不确定度肯定是在训练好的模型上,也就是测试模型时估计的。所以我们只需要在预测的时候,仍然将dropout打开,预测 T TT 次,取预测的平均值就是最终的预测值。并且通过平均值就可以得到方差,这样就得到深度学习的不确定度了。这种方法也被称为MC Dropout贝叶斯神经网络。
https://blog.youkuaiyun.com/qq_49030008/article/details/120208994