神经网络

干货|PRML读书后记(一): 拟合学习

走远了吗. 提交于 2020-11-25 09:48:20
1 优美的高斯分布 [P29]图1.16很好的描绘了这样表达的优美之处: 2 极大似然估计的病态拟合 3 参数-Regularizer 4 先验分布:高斯分布 高斯分布应该算是我们认知中,描绘一切连续型数值不确定性的最基本、最硬派的先验知识了。 甭管你是什么妖魔鬼怪,只要你是连续的,不是离散的,先给你套个高斯分布的罪状。 当然,钦定高斯分布从数学角度是由原因的,和其优美的数学共轭形式有关。 [P98]的练习证明了,高斯似然分布 x 高斯先验分布,结果仍然是一个高斯分布。 (此证明需要熟读第二章关于高斯分布的 150 个公式,需要很好的概率论、线代基础。) 高斯分布在数学形式上有许多便利,比如下面提到的零均值简化版高斯分布,这为贝叶斯方法招来很多 恶评,[P23] 是这样解释的:贝叶斯方法广受批判的原因之一,是因为其在选取先验概率分布上,根据的是 数学形式的便利为基础而不是 先验分布的信度 。 贝叶斯方法讲究推导严谨,公式齐全,对于那些奇怪的、无法用数学语言表达原理的、广布自然界的先验知识, 如Deep Learning思想,自然不会考虑,这也是为什么有人会认为Deep Learning与Bayesian是对着干的。[Quroa] 5 波动性惩罚:简化高斯分布 6 稀疏性惩罚:L1 Regularizer I、大脑中有1000亿以上的神经元,但是同时只有1%~4%激活

干货|通俗易懂讲解Deep Learning 最优化方法之AdaGrad

冷暖自知 提交于 2020-11-25 09:48:03
1 总括 首先我们来看一下AdaGrad算法 我们可以看出该优化算法与普通的sgd算法差别就在于标黄的哪部分,采取了累积平方梯度。 简单来讲,设置全局学习率之后,每次通过,全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同 2 作用 那么它起到的作用是什么呢? 起到的效果是在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。 下面通过例子讲解一下: 假设我们现在采用的优化算法是最普通的梯度下降法mini-batch。它的移动方向如下面蓝色所示: 假设我们现在就只有两个参数w,b,我们从图中可以看到在b方向走的比较陡峭,这影响了优化速度。 而我们采取AdaGrad算法之后,我们在算法中使用了累积平方梯度r=:r + g.g。 从上图可以看出在b方向上的梯度g要大于在w方向上的梯度。 那么在下次计算更新的时候,r是作为分母出现的,越大的反而更新越小,越小的值反而更新越大,那么后面的更新则会像下面绿色线更新一样,明显就会好于蓝色更新曲线。 在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。 这就是AdaGrad优化算法的直观好处。 参考:YBB的Deep

【干货】循环神经网络(RNN)为什么能够记忆历史信息

折月煮酒 提交于 2020-11-25 08:26:03
本篇笔记接上篇笔记【直观理解】一文搞懂RNN(循环神经网络)基础篇(请戳我)记录一下RNN为什么可以记录以前历史信息,如何从公式中体现出? 那么首先介绍一下为什么普通的神经网络不能记忆以前的历史信息,然后引出RNN的相应能力,因为如果普通的神经网络能够记录以前的历史信息的话,那么也就不会有RNN思想的诞生了。 1 普通神经网络(MLP) 首先我们有一个任务,就是进行词性标注,下面有两个训练数据。 他向我表白 我觉得他的表白不够真诚 正确的词性是: 那么将这些训练数据送给神经网络进行训练,比如第一个数据 “他/r”,神经网络学习 “他->r”的一个映射,第二个数据 “向/p”,神经网络学习一个 “向->p”的映射,这样一直将训练数据学习完,更新到最后的参数,从而学习到model,但是问题来了。 学习示例图如下: 在上面的训练数据中,有些词语的词性并不是唯一的,比如“表白”一词,在“他向我表白”这句话中作为动词v,在“我觉得他的表白不够真诚”这句话中作为名词n,所以对于神经网络来说,它是会学乱的。 一下子神经网络要学习“表白”是动词,一下子又要学习“表白”是名词,神经网络也很无辜呀,它没有能力来处理什么情况下应该将“表白”判别为名词,什么情况下降“表白”判断为动词,因为神经网络学习不到周围的语境。喂给神经网络的数据和之前的数据并没有联系。

两层神经网络的实现(含relu激励方程的反向传播推导过程)

孤者浪人 提交于 2020-11-24 12:36:23
神经网络的典型处理如下所示: 定义可学习参数的网络结构(堆叠各层和层的设计); 数据集的制作和输入; 对输入进行处理(由定义的网络层进行处理),主要体现在网络的前向传播; 计算loss ,由Loss层计算; 反向传播求梯度; 根据梯度改变参数值,最简单的实现方式(SGD)为: weight = weight - learning_rate * gradient 使用pytorch和auto_grad(torch自动求导功能): import torch #import numpy #from torch.autograd import Variable EPOCH = 500 LEARNING_RATE = 1e - 6 N , D_in , H , D_out = 64 , 1000 , 100 , 10 # N代表的是样本个数,D_in是样本的维度,H是隐藏层的维度,D_out是输出层的维度 X = torch . randn ( N , D_in ) Y = torch . randn ( N , D_out ) # 先用随机值初始化两层神经网络的权重 w1 = torch . randn ( D_in , H , requires_grad = True ) w2 = torch . randn ( H , D_out , requires_grad = True ) ""

机器学习中向量化编程总结记录

天涯浪子 提交于 2020-11-24 09:56:13
向量化编程总结记录 很多时候,我们在实现算法的时候,总会碰到累和的伪代码: 比如下面这个: 为了简单我这里只重复5次,但是原理是一样的。 很显然我们要得到这个结果,非常简单,比如下面的这段python代码: 那么我们有没有更好的办法呢?有的,看到X,Y都是向量,我们很容易想到向量化编程。 比如改成下面这段代码: 啊上面这段代码,其实最关键的就是一行代码,就是np.dot(X_array,Y_array)这句话, 就已经能够代替下面这段代码了: 或者用下面这行代码也行! res_temp_2 = np.sum(X_array*Y_array) 这俩种形式比较常见! 贴一下最后的结果截图: 未完待续,后面再碰到的向量化编程也会总结在这。 推荐阅读文章: 隐马尔科夫模型-基本模型与三个基本问题 浅析神经网络中一点优化知识 一文搞懂k近邻(k-NN)算法(一) 近期文章预告: 《隐马尔科夫模型-前向后向算法》 《隐马尔科夫模型-维特比算法》 《深入浅出讲解支持向量机》 全是通俗易懂的硬货!只需置顶~欢迎关注交流~ 来源: oschina 链接: https://my.oschina.net/u/4349795/blog/4740334

10分钟入门pytorch(0)

十年热恋 提交于 2020-11-24 09:55:58
10分钟入门pytorch(0) 我将我学习pytorch的经验写出来,一步一步从0开始让大家学会pytorch,教程比官网的更加简单,同时也增加了更多简单的例子让大家快速上手pytorch,愉快地开始炼丹。 什么?你还不知道pytorch是啥,快点去看看专栏里面的pytorch介绍吧。 1 环境配置 首先当然是需要安装pytorch了,目前pytorch只支持mac和linux,如果你的电脑是windows,装虚拟机或者双系统。如果想要愉快地炼丹,那么强烈推荐使用linux系统,因为所有的深度学习框架在linux上都有很好的支持,远远好于windows系统,而且linux也没有大家想象中的那么难学,目前linux系统的图形界面让大家上手的时候更加容易。 装完了系统之后就需要安装环境了,首推Anaconda,这是一个科学计算的集成环境,安装完这之后基本所需要的包都有了,而且还提供交互式的jupyter notebook,可以说为我们做实验提供了很好的交互。如果去Anaconda的官网下载速度比较慢,可以去清华镜像下载。 安装完Anaconda之后我们就可以安装pytorch了,进入主页,一步一步来就行了,如果要装GPU版的,需要cuda和cudnn,这个网上有很多教程,可以去看看,如果你只是为了快速上手玩玩pytorch,那么可以不用废时间装GPU版。 2 pytorch基础

机器学习十大经典算法-KNN(最近邻学习笔记)

穿精又带淫゛_ 提交于 2020-11-24 09:54:48
机器学习十大经典算法-KNN(最近邻) 最近在学习机器学习,查阅了很多人的博客,受益颇多,因此自己也试着将过学的内容做一个总结,一方面可以提高自己对学习过的算法的认识,再者也希望能帮助到初学者,共勉。。。 1 K-近邻算法原理 K最近邻(kNN,k-NearestNeighbor)分类算法,见名思意: 找到最近的k个邻居(样本),在前k个样本中选择频率最高的类别作为预测类别,什么?怎么那么拗口,没图说个球球,下面举个例子,图解一下大家就会显而易见了,如下图: 我们的目的是要预测某个学生在数学课上的成绩。。。 先来说明几个基本概念:图中每个点代表一个样本(在这里是指一个学生),横纵坐标代表了特征(到课率,作业质量),不同的形状代表了类别(即:红色代表A(优秀),绿色代表D(不及格))。 我们现在看(10,20)这个点,它就代表着:在数学课上,某个学生到课率是10%,交作业质量是20分,最终导致了他期末考试得了D等级(不佳)。同理,这6个点也就代表了6个往届学生的平时状态和最终成绩,称之为训练样本。。。。 现在要来实现我们的预测目的了,想象一下现在一学期快过完了,张三同学马上要考试了,他想知道自己能考的怎么样,他在数学老师那里查到了自己的到课率85%,作业质量是90,那么怎么实现预测呢? 张三可以看做是(85,90)这个点–也被称之为测试样本,首先,我们计算张三到其他6位同学(训练样本

谈谈实现小样本学习的两条路径

半世苍凉 提交于 2020-11-24 09:53:03
来源:混沌巡洋舰 小样本学习是当下机器学习界的一个核心课题。大数据是当下深度学习的咽喉,面临收集成本昂贵,甚至根本无法采集的弊端, 小样本学习的实践价值不言而喻。对于众多产业来说, 真正能够收集到大量样本的是极少数情况,比如人脸识别,互联网上的文本等。而更广大的行业, 数据本身收集就很难,一些隐私伦理等障碍难以跨越,比收集数据更难的还有标注,大数据支撑的机器学习基本使用无望。 所谓小样本学习,就是使用远小于深度学习所需要的数据样本量, 达到接近甚至超越大数据深度学习的效果,也即是小样本学习的本质就是学习的效果与数据比值的提升, 或者说单位数据产生的模型收益增大了 。 与之高度相关的课题其实是迁移学习, 元学习, 提高模型泛化性能, 这些方法, 本质是在不对数据使用量进行限定的情况下, 如何让同一模型用到更广泛的数据分布和更多的任务, 因此它们是一颗硬币的两面。多一分泛化能力,就少一点数据成本。 那么, 小样本学习究竟有没有可能?这个问题其实是细思恐极。因为这个命题就像永动机一样, 似乎违反了能量守恒。不应该是有多少数据, 有多少模型效果吗?这里事实上一被忽略的盲点是先验知识, 二被忽略的是盲点是数据利用效率。 如果没有任何先验知识, 当然是有多少数据有多少模型。然而, 如果先验知识是充足的, 那么其实可以数据不足, 知识来凑。另一条路则是提高单位数据的使用效率,

你的模型需要解释(二)

◇◆丶佛笑我妖孽 提交于 2020-11-24 02:53:58
地址:https://www.zhihu.com/people/wang-xiao-jian-38-81 《深度学习的可解释性研究概览》包含3篇内容,作者将用尽可能浅显的语言带领大家了解可解释性的概念与方法以及关于深度学习可解释性工作的研究成果。 深度学习的可解释性研究(一)—— 让模型具备说人话的能力 深度学习的可解释性研究(二)——不如打开箱子看一看 深度学习的可解释性研究(三)——是谁在撩动琴弦 深度学习的可解释性研究(一)—— 让模型具备说人话的能力 1. 可解释性是什么? 广义上的可解释性指 在我们需要了解或解决一件事情的时候,我们可以获得我们所需要的足够的可以理解的信息。 比如我们在调试bug的时候,需要通过变量审查和日志信息定位到问题出在哪里。比如在科学研究中面临一个新问题的研究时,我们需要查阅一些资料来了解这个新问题的基本概念和研究现状,以获得对研究方向的正确认识。反过来理解, 如果在一些情境中我们无法得到相应的足够的信息,那么这些事情对我们来说都是不可解释的 。比如刘慈欣的短篇《朝闻道》中霍金提出的“宇宙的目的是什么”这个问题一下子把无所不知的排险者卡住了,因为再高等的文明都没办法理解和掌握造物主创造宇宙时的全部信息,这些终极问题对我们来说永远都是不可解释的。 而具体到机器学习领域来说,以最用户友好的决策树模型为例

你的模型需要解释(一)

北战南征 提交于 2020-11-24 02:53:36
导读: 模型可解释性方面的研究,在近两年的科研会议上成为关注热点,因为大家不仅仅满足于模型的效果,更对模型效果的原因产生更多的思考,这样的思考有助于模型和特征的优化,更能够帮助更好的理解模型本身和提升模型服务质量。本文对机器学习模型可解释性相关资料汇总 survey。 ——综述—— 机器学习业务应用以输出决策判断为目标。可解释性是指人类能够理解决策原因的程度。机器学习模型的可解释性越高,人们就越容易理解为什么做出某些决定或预测。模型可解释性指对模型内部机制的理解以及对模型结果的理解。其重要性体现在:建模阶段,辅助开发人员理解模型,进行模型的对比选择,必要时优化调整模型;在投入运行阶段,向业务方解释模型的内部机制,对模型结果进行解释。比如基金推荐模型,需要解释:为何为这个用户推荐某支基金。 机器学习流程步骤:收集数据、清洗数据、训练模型、基于验证或测试错误或其他评价指标选择最好的模型。第一步,选择比较小的错误率和比较高的准确率的高精度的模型。第二步,面临准确率和模型复杂度之间的权衡,但一个模型越复杂就越难以解释。一个简单的线性回归非常好解释,因为它只考虑了自变量与因变量之间的线性相关关系,但是也正因为如此,它无法处理更复杂的关系,模型在测试集上的预测精度也更有可能比较低。而深度神经网络处于另一个极端,因为它们能够在多个层次进行抽象推断,所以他们可以处理因变量与自变量之间非常复杂的关系