梯度下降

10行代码入门机器学习

空扰寡人 提交于 2020-10-26 14:25:55
最近在哔哩哔哩刷到一位up主,仅用了10行代码就实现了机器学习,真让我叹为观止。 看视频戳这里 以下是我的学习总结。 开始 小强会去看电影吗? 如花,小倩,小明和小强,他们是好基友,经常相约去看电影。但小强不是每次都去,以下是他们前四次相约去看电影的情况:(1 表示去看电影,0 表示没去看电影) 如花 小倩 小明 小强 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 假如第五次相约看电影,如花不去,小倩和小明要去,那么小强会去吗? 如花 小倩 小明 小强 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 ? 我们人脑对以上数据进行分析,很容易看出,如花去,小强就去,如花不去,小强就不去,很明显小强对如花有意思,所以得出结论, 小强不去 。 人脑思考分析的过程,怎么转换成让计算机思考呢? 上代码 from numpy import array, exp, random, dot X = array([[ 1 , 0 , 1 ],[ 1 , 1 , 0 ],[ 0 , 0 , 1 ],[ 0 , 1 , 0 ]]) y = array([[ 1 , 1 , 0 , 0 ]]).T random.seed( 1 ) weights = 2 * random.random(( 3 , 1 )) - 1 for _ in range( 10000 )

为什么要做特征归一化/标准化?

断了今生、忘了曾经 提交于 2020-10-25 09:42:20
目录 写在前面 常用feature scaling方法 计算方式上对比分析 feature scaling 需要还是不需要 什么时候需要feature scaling? 什么时候不需要Feature Scaling? 小结 参考 博客: blog.shinelee.me | 博客园 | CSDN 写在前面 Feature scaling,常见的提法有“特征归一化”、“标准化”,是数据预处理中的重要技术,有时甚至决定了算法能不能work以及work得好不好。谈到feature scaling的必要性,最常用的2个例子可能是: 特征间的单位(尺度)可能不同 ,比如身高和体重,比如摄氏度和华氏度,比如房屋面积和房间数,一个特征的变化范围可能是 \([1000, 10000]\) ,另一个特征的变化范围可能是 \([-0.1, 0.2]\) ,在进行距离有关的计算时,单位的不同会导致计算结果的不同,尺度大的特征会起决定性作用,而尺度小的特征其作用可能会被忽略, 为了消除特征间单位和尺度差异的影响,以对每维特征同等看待,需要对特征进行归一化 。 原始特征下, 因尺度差异,其损失函数的等高线图可能是椭圆形 ,梯度方向垂直于等高线,下降会走zigzag路线,而不是指向local minimum。通过对特征进行zero-mean and unit-variance变换后

干货 :深入浅出神经网络的改进方法!

老子叫甜甜 提交于 2020-10-24 18:41:05
高尔夫球员刚开始学习打高尔夫球时,通常会花很长时间练习挥杆。慢慢地,他们才会在此基础上练习其他击球方式,学习削球、左曲球和右曲球。本章仍着重介绍反向传播算法,这就是我们的“挥杆基本功”——神经网络中大部分工作、学习和研究的基础。 本文将着重讲解利用交叉熵代价函数改进神经网络的学习方法。 一、交叉熵代价函数 大多数人不喜欢被他人指出错误。我以前刚学习弹钢琴不久,就在听众前做了一次首秀。我很紧张,开始时错将八度音阶的曲段演奏得很低。我不知所措,因为演奏无法继续下去了,直到有人指出了其中的错误。我当时非常尴尬。不过,尽管不愉快,我们却能因为明显的错误而快速地学到正确的知识。下次我肯定能演奏正确!然而当错误不明确的时候,学习会变得非常缓慢。学习速度下降的原因实际上也是一般的神经网络学习缓慢的原因,并不仅仅是特有的。 引入交叉熵代价函数 如何解决这个问题呢?研究表明,可以使用交叉熵代价函数来替换二次代价函数。 将交叉熵看作代价函数有两点原因。第一,它是非负的,C > 0。可以看出(57)的求和中的所有单独项都是负数,因为对数函数的定义域是(0, 1)。求和前面有一个负号。 第二,如果对于所有的训练输入x,神经元实际的输出都接近目标值,那么交叉熵将接近0。假设在本例中,y = 0而a ≈ 0,这是我们想要的结果。方程(57)中的第一个项会消去,因为y = 0,而第二项实际上就是−ln(1 −

ACL2020|使用强化学习为机器翻译生成对抗样本

笑着哭i 提交于 2020-10-14 03:00:36
     本文介绍的是 ACL 2020 论文《 A Reinforced Generation of Adversarial Examples for Neural Machine Translation》,论文作者来自南京大学、腾讯。   作者 | 邹 威   编辑 | 丛 末      论文地址:https://arxiv.org/pdf/1911.03677.pdf    1    背景介绍   对抗样本(adversarial example)是近年来用于探索深度学习系统鲁棒性的重要工具。对抗样本通过对普通测试输入进行微小扰动(以不改变人期望输出为准),并以劣化系统输出为目标得到。   当前神经机器翻译(neural machine translation, NMT)系统在实用场合常常会出现用户难以预计的错误,这些错误甚至存在消极的社会影响。而基于用户反馈进行的维护通常也是在这些错误产生后才能进行,开发者更希望在上线前就能进行大量的测试进行预防性维护。直接的鲁棒性测试通常需要专家编制大量对应的测试数据并进行标注,但对于机器翻译这类任务而言成本过高。因此我们可以通过利用已有平行句对的输入产生对抗样本的方式,沿用原本的输出,从而快速得到大量可用于鲁棒分析的平行数据。      图1: 对人名的变动影响了翻译的预期结果(此样例当前已被修复)    2    文本对抗样本及难点

如何让SGD更稳更快?

十年热恋 提交于 2020-10-11 00:27:16
我们在训练机器学习模型的时候一般会使用随机梯度下降(SGD)。但SGD有个显著的缺点,那就是到了后期loss会起起伏伏,令我们炼丹师头秃。这个现象其实在深度学习之前的凸问题上就有了,这次介绍 1. 为什么我们在大数据下偏爱SGD; 2. 为什么SGD会不稳、不快; 3. 让SGD更快的一个典型方法——SVRG。 这篇文章来源是这样的:前面的SGD直观解释部分主要是参考本专栏之前的一篇文章[0],后面的SGD公式推导和SVRG部分主要是参考了香港科技大学张潼老师的优化课程的内容,写在这里相当于一个小笔记吧。 本文分成一下几个部分: Part I: SGD简介 Part II: SGD的方差以及造成的影响 Part II.A: 直观描述 Part II.B: 公式描述、逐渐缩小的步长 Part III: 如何减小SGD的方差——SVRG 如果有啥没有说对的欢迎指出来,因为能力有限,也没有做过SGD相关工作,所以如果有哪里错了请一定指出来免得误导大家。 Part I: SGD简介 在机器学习的问题当中,我们一般要解决的问题长这个样子 其中呢, 是要优化的weights, 就代表了一个个的样本。 梯度下降长这个样子 我们看看这个表达式,它其实并不适合我们今天的“大数据”,因为每次更新的时候都要算一遍所有样本的梯度,如果数据量大了(比如几百万条),这个操作是很耗时间的。由于这种大数据的需求

周志华新作《机器学习理论导引》阅读攻略

南楼画角 提交于 2020-10-09 00:23:48
↑ ↑↑ 点击上方 蓝字 ,回复 资料 ,10个G的惊喜 文末赠书福利 最近在读 《机器学习理论导引》 。这本书是西瓜书的作者 周志华 老师领衔、南大 LAMDA 四位教授共同撰写的新书,权威就自不必说。封面画了一只充满了阿里巴巴和四十大盗风格的木箱子,一看就是童话故事官方指定用来装宝贝的那一种,大家就按惯例起了个绰号,叫 “ 宝箱书 ” 。 刚接触机器学习应该都有一个共同的感觉,就是机器学习不太好学习。主要的难题有两个,第一个自然是 数学 ,机器学习需要大量的数学基础知识,一个个张牙舞爪的数学公式很容易让人望而却步。可是,当我们好不容易鼓起勇气,为了学好机器学习,决心和数学死磕到底,我们很快又会遇到第二个难题, 知识面太过宽泛 ,就算愿意硬啃,也让人无从下嘴。 我在以前的文章反复说过, 机器学习是算法,不是一种算法,是一群算法的总称 。机器学习虽然要求解的问题来来去去就那几个大类,但解题思路是一个赛一个精奇,不同思想下设计出来的算法自然也就犹如八仙过海。精彩是挺精彩的,但是自然涉及的数学基础自然五花八门,从学习的角度来看,总感觉要学的东西东一块西一块的不成体系,缺乏一条循序渐进的主轴,甚至连起点在哪里都不太好找。 《机器学习理论导引》就是要解决这个问题。这本书的定位是 “ 给学习和研究机器学习理论提供一个入门引导 ” ,这话是我从书里抄的,写得相当官方,如果没看完这本书

GAN/VAE地位难保? Flow在零样本识别任务上大显身手

ε祈祈猫儿з 提交于 2020-10-06 12:11:40
     作者 | 秦杰、沈钰明   编辑 | 陈大鑫   计算机视觉三大会议之一的ECCV 2020刚刚落下帷幕,本文主要介绍阿联酋起源人工智能研究院(IIAI)的科学家们在该会议上发表的一篇论文:《Invertible Zero-Shot Recognition Flows》。   该工作首次提出了一种基于生成流(Generative Flow)模型的零样本学习方法,并在多个数据库上取得了目前最好的识别结果。      论文链接: https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123610596.pdf   1   零样本学习简介   众所周知,在当今计算机视觉领域,深度学习可谓“一统天下”,在诸多视觉任务中都取得了目前最好的(检测、识别、分割等)结果。而数据可谓是深度学习算法的“Buff”,算法的好坏往往取决于是否有充足且多样性的标注好的训练数据。   举例而言,我们要识别下图中的三种动物,那么首先我们需要标注大量老虎、兔子和斑马的图片,然后基于这些有标签的图片训练深度学习模型,最后将未知类别的图片输入训练好的模型中,才能够准确识别出图片中包含的动物类别。   然而,在实际应用场景中,我们往往会遇到以下“尴尬”情况:当我们在训练深度学习模型时,能“看见”的是标注好的大量老虎和兔子的图片

论文学习记录:PROGRESSIVE GROWING OF GANS

两盒软妹~` 提交于 2020-10-06 09:32:12
论文链接:https://arxiv.org/pdf/1710.10196.pdf 前言 这是一种针对GANs的训练优化方法,从低分辨率图像开始,通过向网络添加层来逐步提高分辨率,如图1。这种递增的特性允许训练首先发现图像分布的大尺度结构,然后将注意力转移到越来越细的尺度细节上,而不必同时学习所有的尺度。 图1: 初始训练时,生成器(G)和鉴别器(D)的空间分辨率都很低,即4x4像素。随着训练的进行,我们逐渐在G和D上增加层,从而提高了生成图像的空间分辨率。在整个过程中,所有现有层都是可训练的。这里N x N是指在N x N空间分辨率下的卷积层。这允许在高分辨率下稳定的拟合,也能够极大地加快训练速度。右边展示了使用渐进式增长生成的6个1024 x 1024像素示例图像。 我们使用生成器和鉴别器网络,它们彼此镜像,同步发展。在整个训练过程中,两个网络中的所有现有层在训练阶段都是可训练的。当新层被添加到网络中时,我们平滑地淡出现有网络,如图2所示,这避免了对已经训练良好的小分辨率层的突然冲击。 图2:当加倍生成器(G)和鉴别器(D)的分辨率时,我们“平滑”地添加新图层。该例子说明了从16×16图像 ( a ) (a) ( a ) 到32×32图像 ( c ) (c) ( c ) 的转换过程。在转换 ( b ) (b) ( b ) 过程中,我们将操作在更高分辨率上的层类似残差块一样处理

深度学习中的一些组件及使用技巧

我只是一个虾纸丫 提交于 2020-10-03 14:24:29
【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] 【补充说明】深度学习有多火,我就不多说了。本文主要介绍深度学习项目实践过程中可能遇到的一些组件及使用技巧! 一、Optimizor优化器选择 1. 梯度下降:经典 梯度下降的通用计算公式如下: 其中, 是学习率, 是梯度。梯度下降完全依赖于当前的梯度,所以 可理解为允许当前梯度多大程度影响参数更新。 梯度下降主要包含三种梯度下降: (1)批量梯度下降(Batch Gradient Descent) 使用所有的训练样本来更新每次迭代中的模型参数 (2)随机梯度下降(Stochastic Gradient Descent) 在每次迭代中,仅使用单个训练样本更新参数(训练样本通常是随机选择的) (3)小批量梯度下降(Mini-Batch Gradient Descent):这个最常用 训练时不是使用所有的样本,而是取一个批次的样本来更新模型参数 小批量梯度下降试图在随机梯度下降的稳健性和批量梯度下降的效率之间找到平衡 梯度下降的缺点: 选择合适的learning rate比较困难 对所有的参数更新均使用同样的learning rate 可能被困在鞍点,容易产生局部最优,不能达到全局最优 2. Momentum Momentum是模拟物理里动量的概念,公式如下: