神经网络
文章平均质量分 72
silent56_th
大学生一枚,对机器学习、图像处理感兴趣,偶尔也会刷刷leetcode或者hihocoder。希望在这里可以和大家多多交流,互相学习。
展开
-
CS231n作业笔记1.6:神经网络的误差与梯度计算
CS231n简介详见 CS231n课程笔记1:Introduction。 本文都是作者自己的思考,正确性未经过验证,欢迎指教。作业笔记这里实现的是一个两层神经网络(含有一个隐层),激活函数使用的是ReLU,误差函数使用的是softmax,使用了L2正则项。1. scores计算需要注意的有 1. 最后一层不使用激活函数 2. 注意加bias的时候,使用了broadcasting,所以在反向传原创 2016-12-21 16:08:40 · 3460 阅读 · 0 评论 -
Hinton Neural Networks课程笔记2b:第一代神经网络之感知机
感知机可以说是最简单最经典的神经网络模型了,简单而言就是对输入加权求和之后,得到一个评价值和一个threshold比较,从而进行分类。只能求取线性分类面,极大依赖于特征提取,但速度极快,适用于特征维度很大的情况。传统模式识别框架传统统计模式识别的标准流程分为三步,首先进行特征提取,然后学习一个加权求和,最后把求和得到的值与一个threshold比较,高于threshold即为正样本,低于则为负样本。原创 2017-08-10 16:09:52 · 1883 阅读 · 0 评论 -
Hinton Neural Networks课程笔记2c:感知机的几何解释
此部分,Hinton从几何角度解释了感知机。这里不是使用权重作为超平面,输入数据作为空间内点的解释方式;相反,这里使用权重作为空间内点,每一维对应于一维权重,输入数据被看做constrain,限制合法权重的空间。 具体的,输入数据和权重维数相同(使用bias,而不是threshold),则每个输入数据可以对应于权重空间中的一个向量(起始点为原点),则对该数据的分类取决于权重向量(起始点为原点)和输原创 2017-08-12 11:32:13 · 1049 阅读 · 0 评论 -
Hinton Neural Networks课程笔记2d:为什么感知机的学习算法可以收敛
感知机的学习算法非常简单,就是每次选取一个样本,如果预测错误,则根据样本真值,权重加减一个输入向量。这和一般使用的附有学习率的优化算法不一样,没有一个超参数,使其快速而且简洁。而为什么这样一个简单的算法可以work,Hinton在这节加以说明。注意此部分是直观层次的解释,不是严谨的数学推导。上一节有提到感知机的几何解释,其中有一个结论是在权重空间内,感知机的合法解是连续的,位于一个被多个超平面限制的原创 2017-08-14 22:40:28 · 1187 阅读 · 0 评论 -
Hinton Neural Networks课程笔记3b:线性神经元的误差曲面
这节其实是在为反向传播(BP)算法铺路,解释了delta rule(chain rule),然后举了个简单的例子,并做了一些评价。回顾感知机的部分,其学习算法简单快速,在数据集线性可分的情况下保证收敛。回顾感知机的学习算法,因为是Binary Threshold的激活函数,构建权重空间之后,每一个数据点对应于权重空间的一个超平面,该超平面对能够正确分类该数据点的权重空间做了限制;满足所有数据点限制的原创 2017-08-25 20:20:48 · 2734 阅读 · 2 评论 -
Hinton Neural Networks课程笔记3c:学习逻辑斯蒂回归
这节可以看做反向传播(BP)算法在逻辑斯蒂回归(logistic regression)中的应用。为了进一步拓展BP算法的应用,从线性神经元拓展到了非线性神经元。这里选取了最简单的非线性神经元:逻辑斯蒂输出神经元(logistic output neuron)。损失函数同样选用简单的误差平方和。逻辑斯蒂神经元(logistic neuron) 如上图所示,该神经元只是在线性神经元的输出后面加上一个原创 2017-08-26 20:33:56 · 743 阅读 · 0 评论 -
Hinton Neural Networks课程笔记3e:如何利用梯度值训练网络(学习策略和过拟合抑制)
这里只是开了个头,笼统的讲了讲如何利用梯度值训练网络,包括优化算法的部分以及防止过拟合的部分。1. 优化算法的部分这里只提到了三个部分(具体要到第六节才讲):batch相关的抉择、学习率相关的选择、优化算法的选择。 batch相关的选项有online(one case)、mini-batch(some cases)和full-batch(all cases)。那online典型的问题就是zig-z原创 2017-08-27 20:38:54 · 833 阅读 · 0 评论 -
Hinton Neural Networks课程笔记quiz 3:带有隐层的非线性神经网络不一定能学习线性函数
这是做quiz 3遇到的问题,在论坛里面找到了差不多的答案,虽然有些文字游戏的意思,但确实是知识盲点,记录在此。问题Consider a neural network with one layer of logistic hidden units (intended to be fully connected to the input units) and a linear output unit.原创 2017-08-27 23:19:30 · 860 阅读 · 0 评论 -
Hinton Neural Networks课程笔记4a:使用神经网络做逻辑推理
PPT中的标题是Learning to predict the next word(学习预测下一个单词),是从实际操作中得出的,但笔者认为这里使用神经网络做逻辑推理的例子很典型,所以拿出来做标题了。 例子简单讲就是给定n个三元组(A,R,B)作为训练集,然后给定A和R,神经网络输出B。这里涉及到学习A,R,B的特征表示,不仅要有意义,而且还有三者之间进行配合。例子简介:亲戚关系推断这节主要介绍一个原创 2017-09-08 14:30:51 · 3443 阅读 · 0 评论 -
神经网络训练技巧讨论:为什么需要标准化
本文关注:对于神经网络(主要是全连接网络+SGD)的学习训练,标准化有什么好处(加速收敛),以及为什么有这样的好处。本文观点大多总结自lecun98年的论文:Efficient BackProp,详情请参考原论文。翻译以及总结过程如有疏漏,欢迎指教。另需说明的是:神经网络模型多变复杂,这里多是对于一般情况的启发性讨论,实际使用中需要具体情况具体分析(例如图像领域大多仅减均值,不除方差)。什...原创 2018-07-12 21:11:20 · 13106 阅读 · 3 评论 -
Hinton Neural Networks课程笔记2a:三种主要的神经网络框架之前向网络、循环神经网络和对称网络
这一节主要是介绍了三种主要的神经网络模型:前向网络、循环神经网络和对称网络前向网络 Feed-forward Neural Networks如果把神经元看做节点,把神经元的输出到另一个神经元的输入看做有向边,那么神经网络可以看做是一个有向图,一个有向图没有圈(circle)的神经网络就是前向网络。前向网络应用广泛,也十分经典,常见的CNN就是一个典型的前向网络;全连接网络则为相邻两层节点之间都有权重原创 2017-07-23 14:56:26 · 4538 阅读 · 0 评论 -
[论文阅读笔记] Massive Exploration of Neural Machine Translation Architectures
最近想要看看Attention的机制,然后被网上博客引到这个论文,想要了解一下NMT(Neural Machine Translation)的架构。这篇paper没有发表在会议上,出自Google Brain,并公开了seq2seq的NMT框架代码。个人觉得文中的结论不太可信,但是对于NMT的介绍还是足够清晰。这里记录一些文中有意思的点,以及一些笔者自己的思考,欢迎指教。NMT框架详见文中Secti原创 2017-07-10 22:37:42 · 1386 阅读 · 0 评论 -
CS231n作业笔记1.7:基于特征的图像分类之调参
CS231n简介详见 CS231n课程笔记1:Introduction。 本文都是作者自己的思考,正确性未经过验证,欢迎指教。作业笔记1. SVM的交叉验证&调参交叉验证的具体内容请参考CS231n课程笔记5.4:超参数的选择&交叉验证。 交叉验证部分的代码和SVM作业中的一模一样,详情请参考CS231n作业笔记1.4:随机梯度下降(SGD),CS231n作业笔记1.3:SVM的误差函数以及反原创 2016-12-23 18:33:01 · 2021 阅读 · 1 评论 -
CS231n作业笔记2.2:多层神经网络的实现
CS231n简介详见 CS231n课程笔记1:Introduction。 本文都是作者自己的思考,正确性未经过验证,欢迎指教。作业笔记这部分就是二层神经网络的拓展,详情参考CS231n作业笔记2.1:两层全连接神经网络的分层实现。 注:这部分不包括dropout以及batch normalization。1. 初始化参数注:这次使用了normal函数,也可以使用randn函数 self.原创 2016-12-28 19:07:22 · 1289 阅读 · 0 评论 -
CS231n课程笔记5.1:神经网络历史&激活函数比较
CS231n简介详见 CS231n课程笔记1:Introduction。 注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。课程笔记关于神经网络的简介请参考 CS231n课程笔记4.2:神经网络结构。1. 神经网络历史具有神经网络的结构,但是使用电门手动构造函数。[Frank Rosenblatt, ~1957: Perceptron;Widrow and Hoff, ~1960:原创 2016-12-24 16:43:03 · 1087 阅读 · 0 评论 -
CS231n课程笔记4.2:神经网络结构
CS231n简介详见 CS231n课程笔记1:Introduction。 注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。课程笔记关于神经网络的实现请参考: CS231n作业笔记1.6:神经网络的误差与梯度计算。1. 神经网络结构 如上图所示,两层之间都是全连接,隐层函数都是用激活函数。两层神经网络,激活函数使用ReLU的形式为scores = W2 max(0,W1*X+b1)原创 2016-12-22 19:37:12 · 574 阅读 · 0 评论 -
CS231n作业笔记2.5:dropout的实现与应用
CS231n简介详见 CS231n课程笔记1:Introduction。 本文都是作者自己的思考,正确性未经过验证,欢迎指教。作业笔记dropout中唯一需要注意的就是为了平衡train与test,通过除以期望值即可。1. 前向传播 if mode == 'train': mask = (np.random.rand(*x.shape)<p) out = x*mask / p原创 2017-01-04 13:38:14 · 2396 阅读 · 0 评论 -
CS231n课程笔记5.2:数据预处理&权重矩阵初始化
CS231n简介详见 CS231n课程笔记1:Introduction。 注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。课程笔记1. 数据预处理1.1. 归一化如下图所示,归一化即使得重心位于原点,方差为1。对于归一化的优点请参考CS231n课程笔记5.1:神经网络历史&激活函数比较。 1.2. PCA & 白化如下图所示,PCA是作用于原数据上的一个线性变换,使得协方差矩阵对原创 2016-12-27 15:17:49 · 1965 阅读 · 0 评论 -
CS231n作业笔记2.1:两层全连接神经网络的分层实现
CS231n简介详见 CS231n课程笔记1:Introduction。 本文都是作者自己的思考,正确性未经过验证,欢迎指教。作业笔记1. 神经网络的分层实现实现全连接层+ReLU层的前向传播与后向传播。 参考资料:CS231n课程笔记4.2:神经网络结构,CS231n课程笔记4.1:反向传播BP, CS231n作业笔记1.6:神经网络的误差与梯度计算,CS231n作业笔记1.5:Softma原创 2016-12-27 18:58:47 · 5420 阅读 · 0 评论 -
CS231n作业笔记2.6:卷积层以及池化层的实现
CS231n简介详见 CS231n课程笔记1:Introduction。 本文都是作者自己的思考,正确性未经过验证,欢迎指教。作业笔记就是简单实现一下卷积层以及池化层,唯一的难点在于确定索引值,稍微注意一下就好。1. 卷积层1.1. 前向传播 N, C, H, W = x.shape F, C, HH, WW = w.shape stride = conv_param['stride'原创 2017-01-04 20:53:02 · 970 阅读 · 0 评论 -
CS231n课程笔记5.3:Batch Normalization
CS231n简介详见 CS231n课程笔记1:Introduction。 注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。Batch Normalization1. 原理BN(Batch Normalization)的原理很简单,就是对于给定输入做一个减均值除方差的归一化(可以这么做的原因是上诉归一化操作可导,即可以做BP(反向传播))。当然这么做的优劣难于判断,所以后文给出了改进原创 2017-02-27 21:12:52 · 2582 阅读 · 0 评论 -
CS231n作业笔记2.4:Batchnorm的实现与使用
CS231n简介详见 CS231n课程笔记1:Introduction。 本文都是作者自己的思考,正确性未经过验证,欢迎指教。作业笔记Batchnorm的思想简单易懂,实现起来也很轻松,但是却具有很多优良的性质,具体请参考课程笔记。下图简要介绍了一下Batchnorm需要完成的工作以及优点(详情请见CS231n课程笔记5.3:Batch Normalization): 需要注意的有:最后原创 2017-01-03 21:21:48 · 9199 阅读 · 6 评论 -
神经网络训练技巧讨论:如何选取batch size
本文中关于Online/Batch learning的观点大多总结自lecun98年的论文:Efficient BackProp,关于Mini-Batch learning的观点大多总结自BatchNorm论文,详情请参考原论文。翻译总结中如有疏漏,欢迎指教。先放最后结论:笔者总结的batch size选取策略如下:考虑内存/显存/计算资源限制,得到被允许的最大值,选取的batc...原创 2018-07-12 20:31:13 · 5398 阅读 · 0 评论