梯度下降

机器学习项目失败的9个原因

纵然是瞬间 提交于 2020-08-13 04:56:55
本文总结了数据科学项目失败的最常见原因,希望能够帮助你避免陷阱。 1.问错了问题 如果你问了错问题,你将会得到错误的答案。比如金融业中的欺诈识别问题,这个问题最初可能是“这个特定的交易是否存在欺诈”。为了确定这一问题,你将需要一个包含欺诈和非欺诈交易示例的数据集。这个数据集可以在一组专门负责侦测欺诈行为的专家(SME)的帮助下生成。但是,由于专家们依据的是过去对欺诈行为的认识进行的标记,用该数据集训练的模型只会捕获符合旧模式欺诈,而对于新兴的欺诈方式,这一模型将无法识别。如果将问题改为“这个交易是否反常”,它只需寻找不符合“正常”签名的交易,依靠人类进一步分析预测的欺诈交易以验证模型结果即可。但这种方法的副作用是,它很可能会比以前的模型产生更多的误报。 2.试图用它来解决错误的问题 我们经常会忽视一个问题:我们费尽心思解决了一个问题,但是解决后是否能实现我们的目的。比如,你想出了用人工智能开发出一个将人的全身照传上网站就能根据提醒量身定做一套合身的衣服的项目。完成这个项目我们需要完成以下任务: ·开发AI/ML技术以确定照片中的身体测量值; ·设计并创建一个网站和手机应用,以便与客户进行互动; ·进行可行性研究以确定此产品是否有市场。 作为技术专家,我们最熟悉的就是产品设计与编码,因此我们可能想开始研究前两个任务

【小白学AI】线性回归与逻辑回归(似然参数估计)

我的梦境 提交于 2020-08-13 03:29:45
文章转自【机器学习炼丹术】 线性回归解决的是回归问题,逻辑回归相当于是线性回归的基础上,来解决分类问题。 1 公式 线性回归(Linear Regression)是什么相比不用多说了。格式是这个样子的: \(f_{w,b}(x)=\sum_i{w_ix_i}+b\) 而逻辑回归(Logistic Regression)的样子呢? \(f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b)\) 要记住的第一句话: 逻辑回归可以理解为在线性回归后加了一个sigmoid函数。将线性回归变成一个0~1输出的分类问题。 2 sigmoid sigmoid函数就是: \(\sigma(z)=\frac{1}{1+e^{-z}}\) 函数图像是: 线性回归得到大于0的输出,逻辑回归就会得到0.5~1的输出; 线性回归得到小于0的输出,逻辑回归就会得到0~0.5的输出; 这篇文章的重点,在于 线性回归的参数估计使用的最小二乘法 ,而 而逻辑回归使用的是似然估计的方法 。(当然,两者都可以使用梯度下降的方法)。 3 似然估计逻辑回归参数 举个例子,现在我们有了一个训练数据集,是一个二分类问题: 上面的 \(x^1\) 是样本,下面的 \(C_1\) 是类别,总共有两个类别。 现在假设我们有一个逻辑回归的模型: \(f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b)

谷歌刷新机器学习世界纪录!2 分钟搞定 ImageNet 训练

二次信任 提交于 2020-08-13 02:52:32
AI 前线导读 :随着技术、算力的发展,在 ImageNet 上训练 ResNet-50 的速度被不断刷新。2018 年 7 月,腾讯机智机器学习平台团队在 ImageNet 数据集上仅用 6.6 分钟就训练好 ResNet-50,创造了 AI 训练世界纪录;一周前,壕无人性的索尼用 2176 块 V100 GPU 将这一纪录缩短到了 224 秒;如今,这一纪录再次被谷歌刷新…… 深度学习非常依赖于硬件条件,它是一个计算密集型的任务。硬件供应商通过在大型计算集群中部署更快的加速器来做出更快的相应。在 petaFLOPS(运算能力单位,每秒千万亿次浮点数运算)规模的设备上训练深度学习模型需要同时面临算法和系统软件两方面的挑战。Google 于近日推出了一种大规模计算集群的图像分类人物训练解决方案,相关论文发表于 Arxiv: Image Classification at Supercomputer Scale 。本文的作者使用 Google TPU v3 Pod 训练 ResNet-50,在识别率没有降低的情况下,仅使用了 2.2 分钟的时间。 背景 深度神经网络的成功应用与发展离不开疯狂增长的算力,在许多领域,深度学习的发展可以说是由硬件驱动的。在深度网络的训练过程中,最关键的部分就是使用随机梯度下降算法(SGD)优化网络权重。通常情况下,模型需要使用 SGD

【飞桨paddlepaddle学习笔记(二)

烂漫一生 提交于 2020-08-12 18:08:47
在深度学习模型的训练过程中,一个训练数据的各个维度对最终的结果都会产生不同的影响,这个维度的影响可以用一个具体的数来表示,这篇文章中我称之为“权重”。为了使模型的输出更符合预期的结果,我们需要不断调整权重的大小。调整权重最常用的方法就是梯度下降算法。 我们假设一个数据只有两个维度,即权重w为一个二维向量,权重调节参数b也为一个二维向量。训练的关键在于找到一组(w,b),使得损失函数loss最小,即使得损失函数L=L(w,b)最小。 一般梯度下降法: 实现梯度下降算法的步骤如下: 随机选取[w,b]的一组初始值; 寻找下一个[w,b]的值[w1,b1],使得Loss(w1,b1) < Loss(w,b) 重复第二步,直到Loss函数不再下降 计算梯度 (1)损失函数定义如下: 其中zi是xi的预测值: (2)梯度定义: 由此可以计算出L对w和b的偏导数 将最终结果写成代码: class Network(object): def __init__(self, num_of_weights): # 随机产生w的初始值 # 为了保持程序每次运行结果的一致性,此处设置固定的随机数种子 np.random.seed(0) self.w = np.random.randn(num_of_weights, 1) self.b = 0. def forward(self, x): z = np

傻瓜式无限P图,MIT朱俊彦团队“重写”深度生成模型

99封情书 提交于 2020-08-12 14:27:26
     作者 | 陈大鑫   编辑 | 丛末   复制一位老人的胡子,把胡子粘贴到全部孩子的眉毛上。该如何实现这样的操作呢?   让我们从塔尖生树的问题说起。   如何在教堂的塔尖上生成一棵树?——当然是使用P图软件啦!      但是P图软件一次只能修改一张图片,难道就没有那种能一键无限张P图的软件吗?   近日,来自MIT朱俊彦团队的一篇论文《Rewriting a Deep Generative Model》就很巧妙地 解决了这个问题,目前该论文已被接收为ECCV 2020 Oral,且代码已开源。   在这篇《重写深度生成模型》论文中,作者不是单独地对一张张图片进行编辑,而是很大胆地提出直接对深度网络的内部生成模型动刀编辑:      在这个规则编辑器中,深度生成模型G(z,w_0) 作为输入,这时模型的初始权重是 w_0,预训练模型G映射一个随机输入向量z到一个真实图像,将权重w_0改成w_1即可产生新的模型作为输出。   利用现有的模型能产生无限数量的图像,那么改变生成模型的规则就能让我们创造新规则下的无限张可改变图像。如下图所示,通过把塔尖的生成模型重写为“树”,一次操作即可在所有教堂的塔尖上都生成一棵树:       1    傻瓜式操作   那这么神奇的重写模型操作起来容易吗,够傻瓜式吗?   为了让读者更好地亲自编辑模型,作者特意创建了一个用户交互界面

Efficient Sparse Pose Adjustment(SPA) for 2D Mapping 论文总结

霸气de小男生 提交于 2020-08-12 03:06:55
Konolige K , Grisetti G , Rainer Kümmerle, et al. Efficient sparse pose adjustment for 2D mapping[C]// 2010 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE, 2010. 这是一篇讲解2D建图中的高效稀疏矩阵图优化的文章,谷歌的cartographer激光slam中位姿图优化主要便是基于思想来实现的。文章主要贡献是在 L M LM L M 优化过程中使用乔里斯基分解(Cholesky decomposition)实现稀疏 H H H 矩阵下的状态增量 Δ \Delta Δ x高效快速求解。 1. 摘要 图优化已经成为一种解决slam问题的主流方法。位姿图是由一系列非线性约束连接机器人位姿点构成,这些约束来自于位姿点周围共同的特征观测。由于直接非线性优化的计算时间与图的大小的3次方成比例增长, 优化大型位姿图 成为移动机器人一个比较大的瓶颈问题。文章为了解决这个问题, 提出一种有效的方法去构建和解决其中的线性化子问题 ,这是常规直接非线性优化方法中的性能瓶颈所在。作者将文中所提方法命名为 SPA(Sparse Pose Adjustment )

基于度量的元学习和基于优化的元学习

☆樱花仙子☆ 提交于 2020-08-11 13:20:44
在介绍两种主流的元学习方法之前,先简要概括下元学习与监督学习的区别。 监督学习: 只在一个任务上做训练; 只有一个训练集和一个测试集; 学习的是样本之间的泛化能力; 要求训练数据和测试数据满足独立同分布; 监督学习的训练和测试过程分别为train和test; 小样本条件下监督学习的过程如图所示。 监督学习过程 元学习: 元学习是面向多个任务做联合训练; 每个任务都有训练集和测试集; 学习到的是任务之间的泛化能力; 要求新任务与训练任务再分布上尽可能一致; 元学习的训练和测试过程分别叫做Meta-train和Meta-test; 小样本条件下元学习过程如下图所示。更多元学习的细节内容可以参见: 小样本学习方法专栏 元学习过程 介绍两种类型的元学习方法 在元学习过程中元学习器Meta-learner是学习过程的重要一环,承接着Meta-train和Meta-test两个阶段。针对元学习器的搭建,近年来主流的方法模型如下图所示。 主流元学习模型 从基于度量和基于优化的角度可以将上述模型分为两大类,基于度量的元学习模型:MatchingNet、ProtoNet、RelationNet等,基于优化的元学习模型:MAML、Reptile、LEO等。下面对上述模型一一的做个简要的介绍: 基于度量的三个元学习模型 基于度量的三个元学习模型的示意图如下图所示: MatchingNet:Support

两天的时间,我们能用来做什么?

时光总嘲笑我的痴心妄想 提交于 2020-08-11 12:32:37
(这里是本章会用到的 GitHub 地址,我给它起名为了 carefree-ml ,观众老爷们可以赏一个 star 和 fork 么 ( σ'ω')σ) carefree-ml ​ github.com 观众老爷们大家好!最近实在太忙,回首一看上篇专栏文章已经是 两年半 前的事了(?!),所以今天想着写出一篇来撑撑场子(喂 但感觉已经没有当初写专栏的感觉了,所以可能画风会变不少,观众老爷们还望不要介意(逃 (说到底上面这两段就是原封不动地把上篇的前两段粘过来的这样真的好吗 这次想和大家分享的是我最近面试实验室实习生面试到头晕目眩时突发奇想(不)、并用两天时间实现的一个 repo。实现这个 repo 恰好也算是达成了我一直以来未竟的两个心愿: 探索机器学习算法到底可以简化成什么样 探索各种机器学习算法间的共性究竟有多少 现在其实人工智能的热度也渐渐下来了,所以这篇文章更像是为还对一些小细节感兴趣的观众老爷们准备的惊喜礼物吧。如果你恰好也有上述这两个疑惑,又或是想教导其他人这方面的直观,那么 carefree-ml 可能就会比较适合你。但是,如果你对机器学习有着更高的追求,对各种美妙的性质有着探索的欲望,那么 carefree-ml 反而可能会激怒你,因为它省略了很多前人研究出来的结晶 注:这篇文章中可能会冒出些大家不太熟悉的名词;我会对之前写过相应文章的给个相应的链接

机器学习入门:极度舒适的GBDT原理拆解

亡梦爱人 提交于 2020-08-11 11:05:40
机器学习入门:极度舒适的GBDT拆解 本文旨用小例子+可视化的方式拆解GBDT原理中的每个步骤,使大家可以彻底理解GBDT Boosting → Gradient Boosting Boosting是集成学习的一种基分类器(弱分类器)生成方式,核心思想是通过迭代生成了一系列的学习器,给误差率低的学习器高权重,给误差率高的学习器低权重,结合弱学习器和对应的权重,生成强学习器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$β_m$就是弱学习在强分类器中所占比重,P是所有$α_m$和$β_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ Gradient Boosting = Gradient Descent + Boosting Boosting 算法(以AdaBoost为代表)用错分数据点来识别问题,通过调整错分数据点的权重来改进模型

机器学习入门:极度舒适的GBDT原理拆解

北城以北 提交于 2020-08-11 06:32:46
机器学习入门:极度舒适的GBDT拆解 本文旨用小例子+可视化的方式拆解GBDT原理中的每个步骤,使大家可以彻底理解GBDT Boosting → Gradient Boosting Boosting是集成学习的一种基分类器(弱分类器)生成方式,核心思想是通过迭代生成了一系列的学习器,给误差率低的学习器高权重,给误差率高的学习器低权重,结合弱学习器和对应的权重,生成强学习器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$β_m$就是弱学习在强分类器中所占比重,P是所有$α_m$和$β_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ Gradient Boosting = Gradient Descent + Boosting Boosting 算法(以AdaBoost为代表)用错分数据点来识别问题,通过调整错分数据点的权重来改进模型