神经网络模型

贝叶斯神经网络 BNN

痞子三分冷 提交于 2019-12-02 12:14:12
1. 简介 贝叶斯神经网络不同于一般的神经网络,其权重参数是随机变量,而非确定的值。如下图所示: 2. 模型 假设 NN 的网络参数为 W,p(W) 是参数的先验分布,给定观测数据 D={X,Y},这里 X 是输入数据,Y 是标签数据。BNN 希望给出以下的分布: 其中: 这里 P(W|D) 是后验分布,P(D|W) 是似然函数,P(D) 是边缘似然。 从公式(53)中可以看出,用 BNN 对数据进行概率建模并预测的核心在于做高效近似后验推断,而 VI 是一个非常合适的方法。 BNN 不同于 DNN,可以对预测分布进行学习,不仅可以给出预测值,而且可以 给出预测的不确定性 。这对于很多问题来说非常关键,比如:机器学习中著名的 Exploration & Exploitation (EE)的问题,在强化学习问题中,agent 是需要利用现有知识来做决策还是尝试一些未知的东西;实验设计问题中,用贝叶斯优化来调超参数,选择下一个点是根据当前模型的最优值还是利用探索一些不确定性较高的空间。比如: 异常样本检测 ,对抗样本检测等任务,由于 BNN 具有不确定性量化能力,所以具有非常强的 鲁棒性 。 参考: 变分推断 来源: https://blog.csdn.net/rosefun96/article/details/102759917

神经网络为什么可以逼近任何一个函数? 为什么激活函数要用非线性函数?

若如初见. 提交于 2019-12-02 11:47:30
▍什么是激活函数 在神经元中,输入的inputs通过加权求和,然后被作用了一个函数,这个函数就是激活函数 Activation Function 。激活函数在神经网络中的位置如图所示: ▍为什么要用非线性函数 要解释这个问题,可以反过来思考一下, 为什么激活函数不能使用线性函数 。 如果使用线性函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的 线性组合 。加深神经网络的层数就没有什么意义了。线性函数的问题在于不管加深层数到多少,总是存在与之等效的 「无隐藏层」 的神经网络。为了稍微直观的理解这一点,考虑下面一个简单的例子。 存在一个线性函数 f(x)=kx(k≠0) 作为激活函数,将 y=f(f(f(x))) 对应三层的神经网络。很明显可以想到同样的处理可以由 y=ax(a=k^3) ,一个没有隐藏层的神经网络来表示。该例子仅仅是一个近似,实际中的神经网络的运算要比这个例子复杂很多,但不影响结论的成立。也就是说,使用线性激活函数时,无法发挥多层网络带来的优势。 相反如果使用非线性函数,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。 以上! 来源: https://blog.csdn.net/qq_27403925/article/details/102757791

神经网络学习小记录17——使用AlexNet分类模型训练自己的数据(猫狗数据集)

China☆狼群 提交于 2019-12-02 11:16:29
神经网络学习小记录17——使用AlexNet分类模型训练自己的数据(猫狗数据集) 学习前言 什么是AlexNet模型 训练前准备 1、数据集处理 2、创建Keras的AlexNet模型 开始训练 1、训练的主函数 2、Keras数据生成器 3、主训练函数全部代码 训练结果 学习前言 最近在做实验室的工作,要用到分类模型,老板一星期催20次,我也是无语了,上有对策下有政策,在下先找个猫猫狗狗的数据集练练手,快乐极了。 什么是AlexNet模型 AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的vgg,GoogLeNet。 这对于传统的机器学习分类算法而言,已经相当的出色。 如下是其网络的结构,现在看来还是比较简单的。 这是一个AlexNet的网络结构图,其实并不复杂,很好的反应了AlexNet的结构: 1、一张原始图片被resize到(224,224,3); 2、使用步长为4x4,大小为11的卷积核对图像进行卷积,输出的特征层为96层,输出的shape为(55,55,96); 3、使用步长为2的最大池化层进行池化,此时输出的shape为(27,27,96) 4、使用步长为1x1,大小为5的卷积核对图像进行卷积,输出的特征层为256层,输出的shape为(27,27

4_神经网络优化,y=x1+x2

我只是一个虾纸丫 提交于 2019-12-02 09:26:19
1 神经元模型: 上一节神经网络不算完整,因为计算公式应该是y=add (xi*wi + b) 2、激活函数 引入非线性激活因素,提高模型的表达力。 常用的激活函数有: 3、神经网络的复杂度 可以用神经网络的层数和神经网络待优化的参数个数来表示 4、神经网络的层数 层数=n个隐藏层 + 1个输出层 注意:一般不计入输入层 5、神经网络待优化的参数 神经网络所有参数w、b的个数 举例:下图为神经网络示意图 在该神经网络中,包含1个输入层、1个隐藏层和1个输出层,该神经网络的层数为2层。(不计入输入层) 在该神经网络中,参数的个数是所有参数w的个数加上所有参数b的总数,第一层参数用三行四列的二阶张量表示(即12个线上的权重w)再加上4个偏置b;第二层参数是四行两列的二阶张量(即8个线上的权重w)再加上2个偏置b。总参数=3 4+4+4 2+2=26。 第二次循环,神经网络优化,奶销量 在本篇文章中我们用一个预测酸奶日销量 y 的例子来验证神经网络优化的效果。x1、x2是影响日销量的两个因素。由于目前没有数据集,所以利用随机函数生成x1、x2,制造标准答案y_=x1+x2,为了更真实,求和后还添加了正负0.05的随机噪声。 选择mse的损失函数,把自制的数据集喂入神经网络,构建神经网络,看训练出来的参数是否和标准答案y_ = x1+x2 import tensorflow as tf

循环神经网络导读

一笑奈何 提交于 2019-12-02 07:56:26
循环神经网络导读 循环神经网络(Recurrent Neural Network)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络。其中双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的的循环神经网络。今天,小编带你认识常见的几种循环神经网络模型,主要内容来自Colah的博客,外加一些自己的总结,一起来学习吧~ 循环神经网络 RNNs 在阅读或思考的过程中,人类常常结合以前的信息得到结果。但是,普通的神经网络并不能做到这一点。这或许便是传统神经网络的主要缺点。 循环神经网络 可以做到这一点,通过循环,循环神经网络将当前步所学习到的信息传递下去,从而学会像人一样进行思考。 上图即是循环神经网络的一个示例。可以看到,同普通的神经网络相似,其同样具有输入输出层以及隐层。但是,循环神经网络会结合当前步的输入 以及上一步网络所给出的 hidden state , 计算出当前时间步的 ,并将 作为输入输出到下一时间步的循环神经网络之中。同时,网络的其他部分会根据当前的状态 计算出当前步的输出 . 给出计算公式为: 为了便于理解,我们可以将循环神经网络视作一系列共享权值的网络,并将其展开。 展开之后,可以感觉到循环神经网络似乎天然与

torch_06_卷积神经网络

不打扰是莪最后的温柔 提交于 2019-12-02 02:52:24
1.概述   卷积神经网络的参数,由一些可学习的滤波器集合构成的,每个滤波器在空间上都计较小,但是深度和输入数据的深度保持一致。在前向传播中,让每个滤波器都在输入数据的宽度和高度上滑动(卷积),然后计算整个滤波器和输入数据任意一处的内积。当滤波器沿着输入数据的宽度和高度滑动时,会生成一个二维的激活图,激活图上的每个空间位置表示了原图片对于该滤波器的反应。 2. 三种思想 2-1 局部性   对于一张图片,需要检测图片中的特征来决定图片的类别,通常情况下这些特征都不是由整张图片决定的,而是由局部的区域决定。 2-2 相同性   对于不同的图片,如果他们具有相同的特征,这些特征会出现在图片的不同位置,也就是说可以用同样的检测模型去检测不同图片的相同特征,只不过这些特征处于图片中不同的位置,但是特征检测所做的操作几乎一样。 2-3 不变性   对于一张大图片,如果我们进行下采样,图片的性质基本保持不变。 3.全连接网络   由一系列隐藏层构成,每个隐藏层中由若干个神经元构成,其中每个神经元都和前一层的所有神经元相关联,但是每一层中的神经元是相互独立的。   存在的问题:比如在MNIST数据集,图片大小为28*28,那么第一个隐藏层的 单个 神经元的权重数目是28*28 = 784个 (权重矩阵的一行为一个神经元,一行有784列) 4.卷积神经网络:一个滤波器就相当于一个神经元 卷积层:

神经网络学习笔记(2)

我们两清 提交于 2019-12-01 22:47:09
神经网络学习笔记(2)   本文是神经网络学习笔记的第二部分,紧接着笔者的 神经网络学习笔记(1) ,主要内容为对总结神经网络的常用配置方式,包括如下几点:(1)数据预处理;(2)权重初始化;(3)正则化与Dropout;(4)损失函数。    1、数据预处理   对于神经网络而言,数据的预处理常见的方法主要包括0-1归一化,主成分分析(PCA)及one-hot编码标签。   (1)0-1归一化:将样本所有维度的数据转变为以0为均值,1为标准差的新数据。处理方式为,对训练数据的每一个维度,分别计算其均值和标准差,然后将这一维度的数据分别减去均值然后除以标准差。至于为什么需要对数据进行这一处理,笔者也没有找到很好的解答,欢迎各位大牛在本文下面留言探讨;    注意: 当我们在进行归一化处理的时候,我们处理所用的数值(例如:均值和方差)只能够从训练集上面获得,然后将从训练集上计算得到的值直接应用到验证集/测试集上,而不是在验证集/测试集上面重新计算新值,或者直接从整体的数据集上面计算均值和方差然后再划分数据集。我想这还是为了保证模型泛化能力检测的公正性,避免验证集/测试集中的任何数据泄露到训练过程中。   (2)主成分分析(PCA):对于神经网络而言,该方法主要用于对数据进行降维(也可用于数据的压缩)。网络上面已经有很多文章对PCA的基本过程进行解读

机器学习笔记(四)神经网络的基本概念

不羁的心 提交于 2019-12-01 13:34:53
Neural networks(神经网络) 1、问题背景: 在计算机视觉处理中,50*50的图片有2500个像素点,对于所有“x i *x j ”二次项特征值有2500*2500/2 ≈ 300万,特征过多导致过拟合。 2、模型: 如果第 j 层有 s j 个神经元,第 j+1 层有 s j+1 个神经元,那么 θ (j) 是 s j+1 *(s j +1) 维。 3、数学定义: 正向激励通式: 4、举例: 5、多类别分类情况: 当h θ (x) = [1 0 0 0] T ,为行人; 当h θ (x) = [0 1 0 0] T ,为车; 当h θ (x) = [0 0 1 0] T ,为摩托; 等等 最终的结果形如: 来源: https://www.cnblogs.com/orangecyh/p/11685294.html

卷积神经网络(CNN)

耗尽温柔 提交于 2019-12-01 10:16:37
卷积神经网络( CNN ) 1.1 二维卷积层 卷积神经网络是含有卷积层的神经网络,均使用最常见的二维卷积层,它有高和宽两个空间维度,常用来处理图像数据。 1.1.1 二维互相关运算 在二维卷积层中,一个二维输入数组和一个二维核数组通过互相关运算输出一个二维数组。 输入一个高和宽均为3的二维数组,核数组的高和宽均为2,核数组在卷积计算中又称卷积核或过滤器,卷积核窗口(卷积窗口)的形状取决于卷积核的高和宽。 1.1.2 二维卷积层 二维卷积层将输入和卷积核做互相关运算,并加上一个标量偏差来得到输出。卷积层的模型参数包括卷积核与标量偏差。在训练模型时,通常先对卷积核随机初始化,然后不断迭代卷积核与偏差。 卷积窗口形状为p x q的卷积层称为p x q卷积层,说明卷积核的高和宽分别为p和q。 1.1.3 图像中物体边缘检测 卷积层的简单应用:检测图像中物体的边缘,即找到像素变化的位置。卷积层可以通过重复使用卷积核有效的表征局部空间。 1.1.4 通过数据学习核数组 例子:使用物体边缘检测中的输入数据x,输出数据y,来构造核数组k。首先构造一个卷积层,将卷积核初始化成随机数组,在每一次迭代中,使用平方误差来比较Y和卷积层的输出,然后计算梯度来更新权重。 1.15 特征图和感受野 特征图:二维卷积层输出的二维数组可以看做是输入在空间维度(宽和高)上某一级的表征。 感受野

史上最全的机器学习资料(上)

情到浓时终转凉″ 提交于 2019-12-01 06:00:33
摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB、Python、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习牵涉的编程语言十分之广,包括了MATLAB、Julia、R、Perl、Python、Clojure、Ruby等等。 为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。 目录 C 通用机器学习 计算机视觉 C++ 计算机视觉 通用机器学习 自然语言处理 序列分析 手势识别 Common Lisp 通用机器学习 Clojure 自然语言处理 通用机器学习 数据分析 /数据可视化 Erlang 通用机器学习 Go 自然语言处理 通用机器学习 数据分析 /数据可视化 Haskell 通用机器学习 Java 自然语言处理