当前位置: 首页 > 编程日记 > 正文

我是一个平平无奇的AI神经元

来源 | 编程技术宇宙

责编 | 晋兆雨

头图 | CSDN付费下载自视觉中国

我是一个AI神经元

我是一个AI神经元,刚刚来到这个世界上,一切对我来说都特别新奇。

之所以叫这个名字,是因为我的工作有点像人类身体中的神经元。

人体中的神经元可以传递生物信号,给它输入一个信号,它经过处理后再输出一个信号传递给别的神经元,最终传递到大脑完成对一个信号的决策和处理。

聪明的计算机科学家们受到启发,在代码程序里发明了我:神经元函数。

在我们的世界里,我只是普普通通的一员,像我这样的神经元有成百上千,甚至上万个,我们按照层的形式,组成了一个庞大的神经网络。

很快我和隔壁工位的大白开始混熟了,他比我来得早,对这里要熟悉的多。

听大白告诉我说,我们这个神经网络是一个图像识别的AI程序,只要给我们输入一张狗的照片,我们就能告诉你这是一只柯基,还是泰迪、柴犬、二哈···


神经元结构

在大白的指引下,我很快就学会了怎么工作。

虽然我们叫神经元,名字听起来挺神秘的,但实际上我就是一个普通函数,有参数,有返回值,普通函数有的我都有:

def neuron(a):w = [...]b = ......

我有一个参数a,这个参数是一个数组,里面的每一个元素我把它分别叫做a1,a2,a3···用这个a来模拟我这个神经元收到的一组信号。

人类的神经元是怎么处理输入的生物信号我不知道,我估计挺复杂的。但在我这里就很简单:我给每一个输入值设定一定的权重,然后做一个简单的加权求和,最后再加上一个偏移值就行啦!

所以我还有一个数组叫做w,就是权重weight的意思,里面的每一个元素我叫做w1,w2,w3···,至于那个偏移值,就叫它bias。

如此一来我的工作你们也该猜到了,就是把传进来的a里面的每个元素和w里的每一个元素做乘法,再加起来,最后加上偏移值,就像这样:

说到这里,我突然想到一个问题,打算去问问大白。

“大白,这些要计算的数据都是从哪里来的呢?”

“是上一层的神经元们送过来的”

“那他们的数据又是哪来的呢?”,我刨根问题的问到。

大白带我来到了门口,指向另外一个片区说到,“看到了吗?那里是数据预处理部门,他们负责把输入的图片中的像素颜色信息提取出来,交给我们神经网络部门来进行分析。”

“交给我们?然后呢”

“咱们这个神经网络就像一台精密的机器,我们俩只是其中两个零件,不同的权重值某种意义上代表了对图片上不同位置的像素关心程度。一旦开动起来,喂给我们图片数据,我们每一个神经元就开始忙活起来,一层层接力,把最终的结果输出到分类器,最终识别出狗的品种。”


神经网络训练

正聊着,突然,传来一阵广播提示音,大家都停止了闲聊,回到了各自工位。

“这是要干啥,这么大阵仗?”,我问大白。

“快坐下,马上要开始训练了”,大白说到。

“训练?训练什么?”

“咱们用到的那些权重值和偏移值你以为怎么来的?就是通过不断的训练得出来的。”

还没说到几句话,数据就开始送过来了。按照之前大白教给我的,我将输入数据分别乘以各自的权重,然后相加,最后再加上偏移bias,就得到了最后的结果,整个过程很轻松。

我准备把计算结果交给下一层的神经元。

大白见状赶紧制止了我,“等一下!你不能直接交出去”

“还要干嘛?”

大白指了一下我背后的另一个家伙说到:“那是激活函数,得先交给他处理一下”

“激活函数是干嘛的?”,我问大白。

“激活,就是根据输入信号量的大小去激活产生对应大小的输出信号。这是在模仿人类的神经元对神经信号的反应程度大小,好比拿一根针去刺皮肤,随着力道的加大,身体的疼痛感会慢慢增强,差不多是一个道理。”

听完大白的解释,我点了点头,好像明白了,又好像不太明白。

后来我才知道,这激活函数还有好几种,经常会打交道的有这么几个:

  • sigmoid

  • tanh

  • relu

  • leaky relu

激活函数处理完后,总算可以交给下一层的神经元了,我准备稍事休息一下。

刚坐下,就听到大厅的广播:

随后,又来了一组新的数据,看来我是没时间休息了,赶紧再次忙活了起来。

这一忙不要紧,一直搞了好几个小时,来来回回重复工作了几万次,我都快累瘫了。


损失函数 & 优化方法

趁着休息的空当,我又和大白聊了起来。

“大白,刚刚咱们这么来来回回折腾了几万次,这是在干啥啊?”

大白也累的上气不接下气,缓了缓才说到:“这叫做网络训练,通过让我们分析大量不同品种狗的图片,让我们训练出合适的权重和偏移值,这样,我们就变得会认识狗品种了,以后正式工作的时候给我们新的狗的图片,咱们也能用学到的知识去分辨啦!”

“那到底是怎么训练的,你给我说说呗”,我继续问到。

“你刚才也看到了,广播里不断通知更新权重和偏移值。这训练就是通过不断的尝试修改每一层神经元的权重值和偏移值,来不断优化,找到最合适的数值,让我们对狗的种类识别准确率最好!”,大白说到。

“不断尝试修改?这么多神经元,难不成看运气瞎碰?”

大白给了我一个白眼,“怎么可能瞎试,那得试到猴年马月去了。咱们这叫深度学习神经网络,是能够自学习的!”

他这么一说我更疑惑了,“怎么个学习法呢?”

“其实很简单,咱们先选一组权重偏移值,做一轮图片识别,然后看识别结果和实际结果之间的差距有多少,把差距反馈给咱们后,再不断调整权重和偏移,让这个差距不断缩小,直到差距接近于0,这样咱们的识别准确率就越接近100%”

“额,听上去好像很简单,不过我还有好多问题啊。怎么去衡量这个差距呢?具体怎么调整权重偏移呢?调整幅度该多大好呢?”,我小小的脑袋一下冒出了许多的问号。

大白脸上露出了不可思议的表情,“小伙子,不错嘛!你一下问出了神经网络的三个核心概念。”

“是哪三个?快给我说说”

大白喝了口水,顿了顿接着说到,“首先,怎么去衡量这个差距?这个活,咱们部门有个人专门干这活,他就是损失函数,他就是专门来量化咱们的输出结果和实际结果之间的差距。量化的办法有很多种,你空了可以去找他聊聊”

“那第二个呢?”

“第二个,具体怎么调整,这也涉及到咱们神经网络中一个核心概念,他就是优化方法,咱们部门用的最多的是一个叫梯度下降的方法。那玩意儿有点复杂,一时半会儿给你说不清楚,大概差不多就是用求导数的方式寻找如何让损失函数的损失值变小”,大白继续耐心的解释着。

“好吧,那第三个核心概念是什么?”

“你刚不是问调整幅度吗?这个调整幅度太小了不行,这样咱们训练的太慢了,那得多训练很多回。太大了也不行,要是一不小心错过了那个最优值,损失函数的结果就会来回摇摆,不能收敛,所以有一个叫学习速率的数值,通常需要程序员们凭借经验去设定”

我还沉浸在大白的讲解中,广播声再次响起:

看来程序员修改了学习速率,我只好打起精神,继续去忙了,真不知道何时才能训练达标啊~

更多精彩推荐
  • 强化学习是针对优化数据的监督学习?

  • 告别CNN?一张图等于16x16个字,计算机视觉也用上Transformer了

  • AI 还原康乾盛世三代皇帝的样貌,简直太太太好玩了!

  • 有人说 GPT3 是“暴力美学”的结晶,它的工作原理你知道吗?| 动图详解

  • 10 月中旬的 Medalla 测试网失常:如何开始,将如何结束?

相关文章:

mysql的越过用户权限表登录

mysql的越过用户权限表登录昨天突然有个朋友对了说,不小心把mysql数据库的mysql库的user表给误删了,让我帮帮他。当是我就想到了越过用户权限表启动服务的选项skip-grant-table.自己也实验了一把,以前只知道有这样的方法,但一直没…

互联网引发全面深刻产业变革

2019独角兽企业重金招聘Python工程师标准>>> 当前,互联网已经渗透到社会生产生活各个方面,深刻改变着人类社会运行方式,加速着人类文明进步的步伐,开启了一个崭新的时代。互联网革命是人类发展史上历次科技革命的发展和…

apache模块

核心功能和多路处理模块 core Apache HTTP服务器核心提供的功能,始终有效。 mpm_common 收集了被多个多路处理模块(MPM)实现的公共指令。 beos 专门针对BeOS优化过的多路处理模块(MPM) event 一个标准workerMPM的实验性变种。 mpm_netware Novell NetWare优化过的线…

如何实现iframe(嵌入式帧)的自适应高度

好几次看到有人提问问到如何实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象,刚好我在工作中也碰到了类似问题,于是上网翻查,东抄抄西看看,弄出来这么一个函数&#…

拖拉机也将自动驾驶,日本劳动力短缺大力发展无人农业

来源 | HyperAI超神经责编 | 晋兆雨头图 | CSDN付费下载自视觉中国内容提要:为解决农业劳动力短缺问题,日本近年来涌现出自动收割机、插秧机等自动化农业设备。近日,其农机生产商久保田,也宣布与英伟达联手,将推出自动…

php字符串操作

1.字符串的格式化 按照从表单提交数据之后,php处理的不同:接受,显示,存储。也有三种类型的格式化方法。 1.1字符串的接收之后的整理: trim(),ltrim(),rtrim() 当数据从表单中上传上来的时候需要对字符串整理一下,去掉字…

javascript事件列表解说

javascript事件列表解说事件浏览器支持解说一般事件onclickIE3、N2 鼠标点击时触发此事件ondblclickIE4、N4 鼠标双击时触发此事件onmousedownIE4、N4 按下鼠标时触发此事件onmouseupIE4、N4 鼠标按下后松开鼠标时触发此事件onmouseoverIE3、N2 当鼠标移动到某对象范围的上方时…

Facebook如何预测广告点击:剖析经典论文GBDT+LR

作者 | 梁唐来源 | TechFlow今天我们来剖析一篇经典的论文:Practial Lessons from Predicting Clicks on Ads at Facebook。从这篇paper的名称当中我们可以看得出来,这篇paper的作者是Facebook的广告团队。这是一篇将GBDT与LR模型结合应用在广告点击率预…

centos lustre 简单 安装教程

Lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护的。 该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数据量存储系统。 因为业务需要,需要做…

安装flash

网校客服124说: 2017-03-11 18:37:39网校客服124说: 2017-03-11 18:37:48您好,您可以安装这个插件试一下http://www.chinaacc.com/downcenter/网校客服124说: 2017-03-11 18:38:04下载后安装时请关闭所有的浏览器。我说: 2017-03-11 18:40:08转载于:https://blo…

左右漂浮的广告代码

引用JS文件的代码&#xff1a; <script language"javascript" src"****.js"></script> <---- var delta0.15 var collection; function floaters() { this.items []; this.addItem function(id,x,y,content) { document.wri…

韩辉:国产操作系统的最大难题在于解决“生产关系”

作者 | 高卫华编辑 | Just出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;操作系统是所有软件体系的基础&#xff0c;而随着中国物联网产业的迅猛发展&#xff0c;诸多国产嵌入式操作系统开始跃出水面。其中之一包括 SylixOS&#xff0c;这是一款由国内企…

java中运用label跳转

2019独角兽企业重金招聘Python工程师标准>>> goto是java的保留词&#xff0c;但java里并没有goto. goto可以随心所欲地在代码里跳转&#xff0c;看似很方便&#xff0c;但带来的代码混乱成为其被人诟病的原因。 然而有些时候必要的goto可以带来很大的方便。所以jav…

【转】超简单利用UGUI制作圆形小地图

http://sanwen.net/a/ithhtbo.html 由于UI都是Achor自己用PS做的&#xff0c;比较粗糙&#xff0c;大家见谅&#xff0c;不过丝毫不影响功能的实现&#xff0c;下面我们看看今天的笔记&#xff1a; 首先我们看看需要哪些组件&#xff1a; 1.在Canvas画布下新建一个GameObject&a…

Jmail的主要参数列表

说明&#xff1a;更多的信息请参考Jmail说明&#xff0c;我想这已经足够用的了。 &#xff08;1&#xff09;Body&#xff08;信件正文&#xff09; : 字符串如&#xff1a;JMail.Body "这里可以是用户填写的表单内容&#xff0c;可以取自From。" &#xff08;2&…

VMware VSphere 虚拟化云计算学习配置笔记(一)

第一章&#xff1a;VMware和VSphere 简单介绍 在VMware发布的vSphere 5.0中&#xff0c;VMware淘汰了ESX&#xff0c;ESXi成为了唯一的hypervisor。在ESXi 5.0中&#xff0c;VMware提供了七大重要的增强功能&#xff0c;包括&#xff1a;镜像生成器&#xff08;Image Builder&a…

“国产操作系统最大难题在于解决「生产关系」” | 人物志

作者 | 高卫华来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;操作系统是所有软件体系的基础&#xff0c;而随着中国物联网产业的迅猛发展&#xff0c;诸多国产嵌入式操作系统开始跃出水面。其中之一包括 SylixOS&#xff0c;这是一款由国内企业翼辉信息自主设计开…

详解 Vue Vuex 实践

2019独角兽企业重金招聘Python工程师标准>>> 随着应用复杂度的增加&#xff0c;我们需要考虑如何进行应用的状态管理&#xff0c;将业务逻辑与界面交互相剥离&#xff0c;详细讨论参考笔者的2016-我的前端之路:工具化与工程化。Vue 为我们提供了方便的组件内状态管理…

可控制的页面内滚动区域

效果预览 下面我们就来详细讲解一下这种效果的制作方法&#xff1a; 首先&#xff0c;我们在样式表里加入“.opacity {FILTER: alpha(opacity100)”&#xff0c;看下面&#xff01; <style type"text/css"><!--.opacity {FILTER: alpha(opacity100)}-->&…

提升对ASP.NET网站性能和多并发的设计的讨论

对于如何提高应用程序的性能&#xff08;无论是互联网应用还是企业级应用&#xff09;我的观点一直是考虑一个核心&#xff1a;IO处理。因为我认为目前的CPU的处理能力已经是非常高了&#xff0c;正常编写的在内存中处理的代码没有太严重的问题都不会对CPU造成很大的影响&#…

算力至上?四大AI芯片大对决

来源 | 老石谈芯&#xff08;ID: laoshi_tanxin&#xff09;目前&#xff0c;全世界超过90%的数据都是在过去的两三年之内产生的。随着人工智能、自动驾驶、5G、云计算等各种技术的不断发展&#xff0c;海量数据都将会继续源源不断的产生。预计到2025年&#xff0c;数据总量将比…

JavaScript作用域原理——预编译

JavaScript是一种脚本语言, 它的执行过程, 是一种翻译执行的过程。并且JavaScript是有预编译过程的&#xff0c;在执行每一段脚本代码之前, 都会首先处理var关键字和function定义式&#xff08;函数定义式和函数表达式&#xff09;。 一、变量执行之前&#xff0c;会被赋为unde…

VC++实现QQ聊天工具【源代码】

http://down.51cto.com/data/53416转载于:https://blog.51cto.com/6297123/1094981

​炸了!程序员现在没有这点技能都还不能就业了?

数据正在变得越来越常见&#xff0c;小到我们每个人的社交网络、消费信息、运动轨迹……&#xff0c;大到企业的销售、运营数据&#xff0c;产品的生产数据&#xff0c;交通网络数据……如何从海量数据中获得别人看不见的知识&#xff0c;如何利用数据来武装营销工作、优化产品…

javascript表单之间的数据传递

今天有朋友问我关于用javascript来进行页面各表单之间的数据传递的问题&#xff0c;我以前也写过&#xff0c;不过从来没有注意&#xff0c;今天总结了一下&#xff0c;希望能够给大家一些帮助&#xff0c;也帮助我总结以前学过&#xff0c;用过的知识。 一&#xff0c;最简单的…

Vue从Hello World到打包(后端适读)

Vue从Hello World到上线 Vue 简介 Vue是个MVVM框架。 特点&#xff1a;简单易学、体积小、性能高。并且它的源码耦合性非常低&#xff0c;了解它的过程也就是思想进步的过程。 当然&#xff0c;只学这一个框架&#xff0c;无法完成前端的全部工作&#xff0c;除了Vue之外&#…

Android和iOS那个好?

Android和iOS那个好&#xff1f; 应该先往哪个上面投入资源&#xff1f; 多次被人问到此类问题&#xff0c;笔者刚好自己的项目也需要考虑iOS版本。就索性进行了一番调研&#xff0c;于是有了本文&#xff08;本次不讨论越狱的iOS&#xff09; 首先从情感上&#xff0c;你…

对话谢宝友:搞真正自研的国产操作系统,而不是伪创新

作者 | 郑丽媛责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;从国外操作系统的长期垄断到中国自主研发操作系统数十年的起落浮沉&#xff0c;技术自主创新独立已成为国产基础软件的主要突破口。近几年间&#xff0c;随着物联网时代的到来&#xff0c;以…

ASP.NET 学习历程

[注意我不推荐高级技术的书&#xff0c;因为你如果是个高手了就可以自己选择甄别书了&#xff0c;此文只对初学者&#xff0c;因为他们此时没有辨别好快的能力&#xff0c;本人几乎买尽所有的.NET书&#xff0c;有好有坏。] 你所看的第一本书对你以后影响最重要&#xff01;&a…

http头部消息中的cache-control解释

网页的缓存是由HTTP消息头中的“Cache-control”来控制的&#xff0c;max-age&#xff1a;&#xff08;只接受 Age 值小于 max-age 值&#xff0c;并且没有过期的对象&#xff09;max-stale&#xff1a;&#xff08;可以接受过去的对象&#xff0c;但是过期时间必须小于 max-st…