最简单的人工神经网络

原文地址:Simplestartificialneuralnetwork

译者&校正:HelloGitHub-小熊熊&卤蛋

在GitHub上一个极简、入门级的神经网络教程,示例代码为Go语言,简洁易懂能用一行公式说明白的道理。

内容分为两部分:

人工神经网络是人工智能的基础,只有夯实基础,才能玩转AI魔法!

温馨提示:公式虽多但只是看起来唬人,实际耐下心读并不难懂。下面正文开始!

通过理论和代码解释和演示的最简单的人工神经网络。

拿最简单的来说,输出值就是输入值乘以权重之后的总和。

现在我们需要调整权重值,从而使得它们可以产生我们预设的输出值。

在初始化时,因为我们不知晓最优值,往往是对权重随机赋值,这里我们为了简单,将它们都初始化为1。

这种情况下,我们得到的就是

通常我们会采用方差(也就是代价函数)来衡量误差:

如果有多套输入输出值,那么误差就是每组方差的平均值。

我们用方差来衡量得到的输出值与我们期望的目标值之间的差距。通过平方的形式就可以去除负偏离值的影响,更加凸显那些偏离较大的偏差值(不管正负)。

然而,神经网络往往涉及到许多不同的输入和输出值,这种情况下我们就需要一个学习算法来帮我们自动完成这一步。

现在是要借助误差来帮我们找到应该被调整的权重值,从而使得误差最小化。但在这之前,让我们了解一下梯度的概念。

对于一个双变量函数,它采用如下形式表示:

什么是梯度下降?下降则可以简单理解为通过梯度来找到我们函数最大斜率的方向,然后通过反方向小步幅的多次尝试,从而找到使函数全局(有时是局部)误差值最小的权重。

然后重复这个过程,直到误差值最小并趋近于零。

附带的示例采用梯度下降法,将如下数据集训练成有两个输入值和一个输出值的神经网络:

一旦训练成功,这个网络将会在输入两个1时输出~0,在输入1和0时,输出~1。

PSD:\github\ai-simplest-network-master\src>gobuild-obin/test.exePSD:\github\ai-simplest-network-master\bin>./test.exeerr:1.7930306267024234err:1.1763080417089242……err:0.00011642621631266815err:0.00010770190838306002err:9.963134967988221e-05Finishedafter111iterationsResults----------------------[11]=>[0.007421243532258703][10]=>[0.9879921757260246]Dockerdockerbuild-tsimplest-network.dockerrun--rmsimplest-network二、最基础的反向传播算法反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。

反向传播技术可以用来训练至少有一个隐藏层的神经网络。下面就来从理论出发结合代码拿下反向传播算法。

在一个神经网络,输入值是前一层节点输出值的权重加成总和,再加上前一层的误差:

如果我们把误差当作层中另外的一个常量为-1的节点,那么我们可以简化这个公式为

反向传播算法可以用来训练人工神经网络,特别是针对具有多于两层的网络。

原理是采用forwardpass来计算网络输出值和误差,再根据误差梯度反向更新输入层的权重值。

在下面的示例中,我们将对不同层节点采用以下激活函数:

在forwardpass中,我们在输入层进行输入,在输出层得到结果。

对于隐藏层的每个节点的输入就是输入层输入值的加权总和:

因为隐藏层的激活函数是sigmoid,那么输出将会是:

同样,输出层的输入值则是

因为我们赋予了恒等函数做为激活函数,所以这一层的输出将等同于输入值。

一旦输入值通过网络进行传播,我们就可以计算出误差值。如果有多套关联,还记得我们第一部分学习的方差吗?这里,我们就可以采用平均方差来计算误差。

现在我们已经得到了误差,就可以通过反向传输,来用误差来修正网络的权重值。

通过第一部分的学习,我们知道对权重的调整可以基于误差对权重的偏导数乘以学习率,即如下形式

我们通过链式法则计算出误差梯度,如下:

类似地,对于隐藏层之间的权重调整,继续以上面的例子为例,输入层和第一个隐藏层之间的权重调整值为

首先,对网络权重值赋予一个小的随机值。

重复以下步骤,直到误差为0:

接下来,我们通过对前一层的加权总和将网络向前传递到J层,如下

最后,我们将这个结果传递到最后的输出层。

针对I和J层节点权重计算其梯度为:

最后一步是用计算出的梯度更新所有的权重值。注意这里如果我们有多于一个的关联,那么便可以针对每组关联的梯度进行累计,然后更新权重值。

可以看到这个权重值变化很小,但如果我们用这个权重再跑一遍forwardpass,一般来说将会得到一个比之前更小的误差。让我们现在来看下……

可见,误差得到了减小!尽管减少值很小,但对于一个真实场景也是很有代表性的。按照该算法重复运行,一般就可以将误差最终减小到0,那么便完成了对神经网络的训练。

本示例中,将一个2X2X1的网络训练出XOR运算符的效果。

注意,XOR运算符是不能通过第一部分中的线性网络进行模拟的,因为数据集分布是非线性的。也就是你不能通过一条直线将XOR的四个输入值正确划分到两类中。如果我们将sigmoid函数换为恒等函数,这个网络也将是不可行的。

讲完这么多,轮到你自己来动手操作啦!试试采用不同的激活函数、学习率和网络拓扑,看看效果如何?

THE END
1.神经网络入门brilliant推出的introductiontoneuralnetworks课程Delve into the inner machinery of neural networks to discover how these flexible learning tools actually work. 15 Lessons Neural Networks The Computer Vision Problem The Folly of Computer Programming Can Computers Learn? The Decision Box Activation Arithmetic Decision Boundaries Building an XOR Gate Clashttp://brilliant.org/courses/intro-neural-networks/
2.如何自己创建一个简单的神经网络搭建神经网络本文主要目的通过我的第一个神经网络二分类器的创建过程,来帮助我自己了解搭建一个简单神经网络的过程,也希望能够帮助到寻找搭建简单的神经网络而遇到困难的人。 下面是一个简单的神经网络二分类器: 若有不足,欢迎建议。 一、引入库: importnumpy importtorch https://blog.csdn.net/2301_79728788/article/details/138418075
3.想了解递归神经网络?这里有一份入门教程雷峰网导语:递归网络是一类人工神经网络,用于识别诸如文本、基因组、手写字迹、语音等序列数据的模式,或用于识别传感器、股票市场、政府机构产生的数值型时间序列数据。 递归神经网络入门教程 引言 递归神经网络是一类人工神经网络,可用于识别诸如文本、基因组、手写字迹、语音等序列数据的模式,也可用于识别传感器、股票市场、政府https://www.leiphone.com/category/ai/syAwLNx4bGPuFYI1.html
4.深度学习入门教程神经网络概述(上)[1] 神经网络概述(上) 2054播放 待播放 [2] 神经网络概述(下) 1346播放 05:42 [3] 神经网络发展史(上) 1540播放 05:48 [4] 神经网络发展史(下) 912播放 05:51 [5] 从0到1-单层感知器(上) 1319播放 09:26 [6] 从0到1-单层感知器(下) https://open.163.com/newview/movie/free?pid=CHHGR9V4D&mid=KHHGRADKT
5.Pytorch官方入门教程学习笔记(二)神经网络神经网络 torch.nn是神经网络的模块化接口,nn构建于Autograd之上,可用来定义和运行神经网络。torch.nn.module是nn一个重要的类,既可以表示神经网络的某一层(layer),也可以表示一个包含很多层的神经网络。一般在使用中,可以继承nn.module,编写自己的网络层。 https://www.jianshu.com/p/c3164ff32d66
6.深度学习之神经网络入门视频教程深度学习之神经网络入门最佳路径 正十七软件工程师 难度初级 时长2小时15分 学习人数21086 综合评分9.73 简介:本课程首先介绍机器学习与深度学习,包括机器学习的应用、岗位职责,深度学习的等。然后通过讲解神经元及其衍生模型逻辑斯底回归、目标函数、梯度下降等深度学习基础知识。最后通过Tensorflow来实现课程讲解的模型。https://www.imooc.com/learn/1063/
7.PyTorch快速入门教程四(cnn卷积神经网络)大体上简单的卷积网络就是这么构建的,当然现在也有很多复杂的网络,比如vgg,inceptionv1-v4,resnet以及修正的inception-resnet,这些网络都是深层的卷积网络,有兴趣的同学可以去看看pytorch的官方代码实现,或者去github上搜索相应的网络。 原创文章,转载请注明 :PyTorch快速入门教程四(cnn卷积神经网络) - pytorch中文网 https://ptorch.com/news/8.html
8.Python中卷积神经网络(CNN)入门教程分分享python卷积神经网络(Convolutional Neural Networks, CNN)是一类特别适用于处理图像数据的深度学习模型,本文介绍了如何使用Keras创建一个简单的CNN模型,并用它对手写数字进行分类,需要的可以参考一下+ 目录 卷积神经网络(Convolutional Neural Networks, CNN)是一类特别适用于处理图像数据的深度学习模型。在Python中,我们可以使用https://www.jb51.net/python/2852301l2.htm
9.卷2受大自然启发的算法+卷3深度学习和神经网络AI算法入门教程人工智能算法全套3册:卷1基础算法+卷2受大自然启发的算法+卷3深度学习和神经网络 AI算法入门教程书籍人工智能基础书 人民邮电 作者:杰弗瑞·希顿出版社:人民邮电出版社出版时间:2024年02月 手机专享价 ¥ 当当价降价通知 ¥179.00 定价 ¥218.00 配送至http://product.dangdang.com/11705690582.html
10.人工智能机器学习技术丛书pyTorch神经网络智能系统与技术pytorch> 编程语言与程序设计 > 其他品牌 > PyTorch深度学习入门与实战(案例视频精讲) chatgpt聊天机器人 人工智能机器学习技术丛书pyTorch神经网络智能系统与技术 pytorch自然语言处理 pytorch入门教程教材书 自营 中国水利水电出版社京东自营官方旗舰店 PyTorch深度学习入门与实战(案例视频精讲) chatg https://item.jd.com/12675431.html
11.最大似然估计(MLE)入门教程腾讯云开发者社区最大似然估计(MLE)入门教程 什么是最大似然估计(MLE) 最大似然估计(Maximum Likelihood Estimation)是一种可以生成拟合数据的任何分布的参数的最可能估计的技术。它是一种解决建模和统计中常见问题的方法——将概率分布拟合到数据集。 例如,假设数据来自泊松(λ)分布,在数据分析时需要知道λ参数来理解数据。这时就https://cloud.tencent.com/developer/article/2160032
12.人工智能零基础入门到开发教程(24.3GB)百度网盘资源下载65569人工智能零基础入门到开发教程 22.6GB 15_Keras深度学习框架视频 488.6MB 04_深度学习更种优化算法.mp4 79.5MB 03_Keras调用VGG16来训练.mp4 168.2MB 02_Keras构建模型_Keras使用MNIST数据集训练CNN.mp4 147.5MB 01_Keras开篇.mp4 93.5MB 14_卷积神经网络深入、AlexNet模型实现视频 1.2GB 03_AlexNet五层https://www.iizhi.cn/resource/detail/27c5fd1ba5c545bfb45d5cd5eff7ad61
13.GitHub快速入门 深度学习思维导图 && 深度学习算法地图 《斯坦福大学深度学习基础教程》 Andrew Ng(吴恩达) 深度学习 吴恩达 个人笔记 && 视频 MIT深度学习基础-2019视频课程 台湾大学(NTU)李宏毅教授课程 && [leeml-notes 图解深度学习_Grokking-Deep-Learning 《神经网络与深度学习》 Michael Nielsen CS321-Hinton CS230https://github.com/Mikoto10032/DeepLearning
14.深度学习之卷积神经网络教程本文我们介绍深度学习与神经网络中卷积算法如何应用在识别图片中?该文是假定你对神经网络和深度学习有一定认识,如果不熟悉,可见本站 “神经网络最基本形式感知器的入门教程”。 首先我们从一个简单任务开始,让机器能够识别数字“8”,我们需要大量手写体的“8”供机器学习和训练使用,那么神经网络将这些大量手写体"8"输https://www.jdon.com/bigdata/convolutional-neural-network.html
15.卷积神经网络入门教程.pdf网页 资讯 视频 图片 知道 文库 贴吧 采购 地图 | 百度首页 登录 加入VIP 意见反馈 下载客户端 7/25/2019 卷积神经网络入门教程 - 百度文库 首页 分类 精品内容 申请认证 机构合作 频道专区 会员中心 从入门到精通:卷积神经网络初学者指南 从入门到精通:卷积神经网络初学者指南 百度文库 专业资料 工程科技 信息https://max.book118.com/html/2019/0725/8002103014002037.shtm
16.pytorch神经网络权重赋值pytorch神经网络高效入门教程pytorch 神经网络权重赋值 pytorch神经网络高效入门教程 神经网络 神经网络可以使用torch.nn包来构建。 已经简单学习过了autograd,nn是依赖autograd去定义模型以及对其求导。一个nn.Module包含层(layers),和一个方法forward(input)(方法返回output)。 例如,来看一下这个用来分类数字图像的网络:https://blog.51cto.com/u_16099299/8806181
17.让研习AI变得简单(一):人工智能12本经典教材推荐第11章 深度神经网络 第12章 强化学习 第13章 宽度学习 第14章 图卷积神经网络 第15章 语音、文本、图像与视频模式识别 图书链接: 当当自营:http://product.dangdang.com/11234769123.html 京东自营:https://item.jd.com/12686986.html 04.《现代神经网络教程》 https://ipiu.xidian.edu.cn/info/1097/2617.htm