梯度下降

ML.NET 推荐引擎中一类矩阵因子分解的缺陷

守給你的承諾、 提交于 2021-01-16 13:21:27
ML.NET 作为 .NET 跨平台的机器学习套件,在回归、预测、分类甚至是图像识别、异常检测都展现出简洁快速的优势,以往的文章已介绍过不再赘述。其实机器学习场景中还有一类非常常见的,就是推荐,特别是在线购物、文娱产品为了提升用户体验,一个比较好的主意就是让用户优先看到他需要的物品、内容,甚至提供用户意料之外又情理之中的产商品。推荐算法正好能够通过数据实现这一目标。 如上图所示,如果我们有用户、商品的购买关系,并且还有用户的评级、评分、评价内容,那么矩阵因子分解算法非常适用。如果我们还能获取到商品本身的一些属性,比如名称、分类、简介、价格的话,那么场感知分解机算法就能发挥特别好的作用。当然,推荐算法比较难的就是冷启动阶段,可能什么数据都没有,初始阶段没有更多选择,那么也只能从相似用户消费记录入手做推荐了,获取用户与购买商品编号的对应关系也算是容易的,此时用得比较多的是一类矩阵因子分解算法。仍然举一个例子,刚刚营业的某书店,基于借阅书的记录,我们给借了《三国志》的读者小强推荐同样借过这本书的小王借看的其他书,可能不一定是名著,不过没关系,这足够达到推荐的效果,因为算法背后的逻辑是相信他们总有其他书是都喜欢看的。 了解到前面的背景知识后,回头我们再看看 ML.NET 的推荐引擎,它同时支持矩阵因子分解和场感知分解算法,官网文档在《教程:使用矩阵因子分解和 ML.NET 生成影片推荐系统

大规模机器学习(Large Scale Machine Learning)

左心房为你撑大大i 提交于 2021-01-16 08:50:45
本博客是针对Andrew Ng在Coursera上的machine learning课程的学习笔记。 [toc] 在大数据集上进行学习(Learning with Large Data Sets) 由于机器学习系统的性能表现往往要求其算法是low biased(在训练集上的训练误差小),并且在尽可能大的数据集上做训练。 It's not who has the best algorithm that wins. It's who has the most data. 比如对于一般线性回归或者logistic回归,有如图的参数迭代更新的公式,假设我们如果有一百万个训练样本(m=100,000,000),则每一次更新参数都需要做一百万次的加和,那么计算量就很大。另外,对于high bias的算法学习曲线(如下图的靠右图),此时增加样本数量也不太可能减少误差,可能合适地增加输入特征才是更有效的。而如左边的情况high variance,用更大的数据集是更有效的。 随机梯度下降(Stochastic Gradient Descent) 由于之前讲的梯度下降(又称Batch Gradient Descent)在样本量大时计算量非常大,更新速度会很慢,为了避免这个问题,我们可以采用随机梯度下降。 具体做法是:我们不再在对参数进行更新时遍历加总所有样本的误差值

深度学习面试题04:随机梯度下降法、批量梯度下降法、小批量梯度下降

我的未来我决定 提交于 2021-01-15 05:06:16
目录    一元线性回归模型    一元线性回归代价函数图像    梯度下降求解    SGD、BGD、Mini-batchGD的特点    参考资料 在《深度学习面试题03改进版梯度下降法Adagrad、RMSprop、Momentum、Adam》中讲到了多种改进的梯度下降公式。而这篇文章和03篇描述的不是一个事情,我们从一个例子说起,就知道改良的GD算法和本节介绍的GD算法的不同点了。 一元线性回归模型 举例:以房屋面积预测房屋价格 假设函数可以设置为 返回目录 一元线性回归代价函数图像 每一个预测值都与真实值存在一个差距,差距的平方和就可以作为一个代价函数。 因此代价函数为: 如下图所示(为方便观察,做了一个截断) 代码为: from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) w = np.arange(-5, 8, .25 ) b = np.arange(-15, 15, .25 ) x = np.array([1,2,3,4 ]) y = np.array([3.2,4.7,7.3,8.5 ]) w, b = np.meshgrid(w, b) R = 0 for

优化算法(Optimization algorithms)

左心房为你撑大大i 提交于 2021-01-14 06:00:40
1.Mini-batch 梯度下降(Mini-batch gradient descent) batch gradient descent :一次迭代同时处理整个train data Mini-batch gradient descent: 一次迭代处理单一的mini-batch (X {t} ,Y {t} ) Choosing your mini-batch size : if train data m<2000 then batch ,else mini-batch=64~512 (2的n次方),需要多次尝试来确定mini-batch size A variant of this is Stochastic Gradient Descent (SGD), which is equivalent to mini-batch gradient descent where each mini-batch has just 1 example. The update rule that you have just implemented does not change. What changes is that you would be computing gradients on just one training example at a time, rather than on

机器学习---感知机(Machine Learning Perceptron)

…衆ロ難τιáo~ 提交于 2021-01-14 04:10:10
感知机(perceptron)是一种线性分类算法,通常用于二分类问题。感知机由Rosenblatt在1957年提出,是神经网络和支持向量机的基础。通过修改损失函数,它可以发展成支持向量机;通过多层堆叠,它可以发展成神经网络。因此,虽然现在已经不再广泛使用感知机模型了,但是了解它的原理还是有必要的。 先来举一个简单的例子。比如我们可以通过某个同学的智商和学习时间(特征)来预测其某一次的考试成绩(目标),如果考试成绩在60分以上即为及格,在60分以下为不及格。这和线性回归类似,只不过设定了一个阈值,使得其可以处理分类问题。 因此,我们定义:给定特征向量x=([x 1 ,x 2 ,...,x n ]) T 以及每个特征的权重w=([w 1 ,w 2 ,...,w n ]) T ,目标y共有正负两类。那么: 对于某个样本,如果其 wx > 阈值(threshold),那么将其分类到正类,记为y=+1; 如果其 wx < 阈值(threshold),那么将其分类到负类,记为y=-1; (注:wx是特征向量和权重向量的点积/内积,wx=w 1 x 1 +w 2 x 2 +...+w n x n ) 也就是说,上式分为两种情况:wx - 阈值(threshold)> 0 或 wx - 阈值(threshold)< 0。我们可以将目标方程式简写成:y=sign(wx+b+ ),对y的估计就是 。

吴恩达深度学习笔记 course2 week2 作业

Deadly 提交于 2021-01-14 02:01:15
import numpy as np import matplotlib.pyplot as plt import scipy.io import math import sklearn import sklearn.datasets from opt_utils import load_params_and_grads, initialize_parameters, forward_propagation, backward_propagation from opt_utils import compute_cost, predict, predict_dec, plot_decision_boundary, load_dataset from testCase import * % matplotlib inline plt.rcParams[ ' figure.figsize ' ] = (7.0, 4.0) # set default size of plots plt.rcParams[ ' image.interpolation ' ] = ' nearest ' plt.rcParams[ ' image.cmap ' ] = ' gray ' # Batch Gradient Descent. def update_parameters_with_gd

吴恩达深度学习笔记course2 week2 测验

末鹿安然 提交于 2021-01-14 00:06:36
1. 第 1 个问题 Which notation would you use to denote the 3rd layer’s activations when the input is the 7th example from the 8th minibatch? a^{[8]\{3\}(7)} a [ 8 ] { 3 } ( 7 ) a^{[3]\{8\}(7)} a [ 3 ] { 8 } ( 7 ) √ a^{[8]\{7\}(3)} a [ 8 ] { 7 } ( 3 ) a^{[3]\{7\}(8)} a [ 3 ] { 7 } ( 8 ) 第 2 个问题 1 point 2. 第 2 个问题 Which of these statements about mini-batch gradient descent do you agree with? Training one epoch (one pass through the training set) using mini-batch gradient descent is faster than training one epoch using batch gradient descent. You should implement mini-batch gradient descent without an

LMS Algorithm 最小均方算法

。_饼干妹妹 提交于 2021-01-13 17:06:34
承接上一篇博文中的线性回归中的的cost function。我们想要找出能使得 J(θ)最小的θ(也叫weights)。 其中J(θ)如下所示: 为了做到使其值最小,让我们使用一个search algorithm,起先对θ做初始猜测,并且不断的改变θ来使得J(θ)最小,直到我们有希望地收敛于θ值最小化J(θ)。具体来说,我们考虑一下梯度下降算法(gradient desent algorithm)。 一、 梯度下降算法(gradient desent algorithm)、 batch gradient descent(批梯度下降) 、 stochastic gradient descent (also incremental gradient descent)随机梯度下降(递增梯度下降) 它开始于某个初始化的θ,并且不断地执行update(更新): 这个更新同时执行了j从0到n。 参数: α是learning rate(学习率)。 这是一个很自然的算法,它就是不断重复执行一个朝J的最大减速方向(最陡下降方向)的步骤。 为了执行这个算法,我们必须弄清楚等式右边的偏导数项是什么。让我们首先解决这个问题,如果我们只有一个训练样例(x,y)(training sample),那么我们就可以忽略J的定义公式中的求和sum。 针对一个单一的训练样例,给定update rule:

怎样预训练GNN能实现更好的迁移效果?北邮等提出自监督预训练策略

微笑、不失礼 提交于 2021-01-12 09:58:45
预训练与微调之间的差异能否缓解?来自北京邮电大学、腾讯、新加坡管理大学和鹏城实验室的研究者进行了分析研究,并提出了一种针对 GNN 的自监督预训练策略。 机器之心报道,作者:小舟、陈萍。 图神经网络(GNN)已经成为图表示学习的实际标准,它通过递归地聚集图邻域的信息来获得有效的节点表示。尽管 GNN 可以从头开始训练,但近来一些研究表明:对 GNN 进行预训练以学习可用于下游任务的可迁移知识能够提升 SOTA 性能。 但是,传统的 GNN 预训练方法遵循以下两个步骤: 1)在大量未标注数据上进行预训练; 2)在下游标注数据上进行模型微调。 由于这两个步骤的优化目标不同,因此二者存在很大的差距。 近日, 来自北京邮电大学和腾讯等机构的研究者进行了分析研究以显示预训练和微调之间的差异 。为了缓解这种差异,研究者提出了 L2PGNN,这是一种针对 GNN 的自监督预训练策略。 论文链接: https:// yuanfulu.github.io/publ ication/AAAI-L2PGNN.pdf 该方法的关键点是 L2P-GNN 试图学习在预训练过程中以可迁移先验知识的形式进行微调。为了将局部信息和全局信息都编码为先验信息,研究者进一步为 L2P-GNN 设计了在节点和图级别双重适应(dual adaptation)的机制。最后研究者使用蛋白质图公开集合和书目图的新汇编进行预训练