模拟人类大脑每秒计算数量级及参数容量的估计

2024-05-08 02:48

本文主要是介绍模拟人类大脑每秒计算数量级及参数容量的估计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      因为海马区两类中间神经元峰值放电频率为310±33.17Hz(类型Ⅰ)和410±47.61Hz(类型Ⅱ)[1]。可以推断出人类神经元的最大计算频率在450Hz左右。可以在最大值410+47.61Hz上保守估计为500Hz。

      根据维基百科List of animals by number of neurons人类神经元数量为860亿,突触数量为10^14–10^15,也就是人类每个神经元平均拥有1163~11628个神经突触,下面我们取最大值 11628 作为基准以方便论述。所以大脑每秒最高计算量为860亿乘以500为:43万亿(这里认为突触只参与数据传输)。

      根据现有的神经元计算模型,如下(来源于ufldl.stanford)

      其中平均每个神经元计算1次需要的计算为:

                                                        

      其中n=11628。f 为Sigmoid函数或者其他激活函数。f 函数中的浮点计算次数为:23254次。f 函数的浮点计算次数为4次左右,所以整个h浮点计算次数为:23258次(这里忽略I/O的效能、内存的架构、快取内存一致性等,下同)。

      假设以大脑的神经元数量(860亿)为需要模拟的神经元数量,以前面大脑处理频率(500Hz)作为计算频率,那么计算机每秒最高需要的总浮点计算次数为:79亿亿次。

      可见现在神经元的计算模型严重依赖于突触的数量,其计算量是最高需要大脑的18327倍! (现在的深度网络已经废弃Sigmoid而以Relu作为激活函数,其中的计算会遇到大量的0值,但是以现在的算法和计算机模型,0值依然要计算,而大脑却不是,大脑的计算方式是惰性计算,即有电流(值)传到神经元才计算,没有就不计算,所以这也是大脑高效的一个原因) 。 因为我们的大脑不会在同一时间其所有的神经元同时激活,所以这里我们在估算大脑的计算数量级的时候,忽略了大脑神经元的平均激活数量和最大激活数量,而仅仅以总的数量作为计算激活数量。如果以最大激活数量作为我们计算法基准,那么整个计算的数量级可能下降很多,此时计算机需要模拟的每秒最高计算次数:如果最多同时激活50%神经元时为,39.5亿亿次;同时激活10%时为,7.9亿亿次。

      天河二号的峰值计算速度每秒5.49亿亿次,因为上面计算量取的最多突触连接和最大大脑处理频率时的,所以天河二号有高可能性能够模拟人类大脑。

      最近(2016年3月)看了AlphaGo与李世石的比赛时的硬件数据,根据估计其运算速度大概为500万亿次浮点每秒,假设在此时AlphaGo与李世石的用脑量相同,那么模拟人脑所需要的计算量应该比上面估计的还要小。

     可以说当PC计算速度超过1亿亿次浮点每秒的时候,计算(机器)智能将迎来了一个新的纪元,人类也将迎来一个新的纪元。

    附:如果按照现代神经网络的架构,和人脑相同的参数,那么人脑参数量为:100~1000万亿参数量,参数以float类型表示,即占用4 byte,那么计算机所需要的硬盘空间大概为400TB~4000TB【突触数量x4/10^12】。

参考

  1. 海马CA1区ripple节律相关高频放电中间神经元

这篇关于模拟人类大脑每秒计算数量级及参数容量的估计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969090

相关文章

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Python中经纬度距离计算的实现方式

《Python中经纬度距离计算的实现方式》文章介绍Python中计算经纬度距离的方法及中国加密坐标系转换工具,主要方法包括geopy(Vincenty/Karney)、Haversine、pyproj... 目录一、基本方法1. 使用geopy库(推荐)2. 手动实现 Haversine 公式3. 使用py

浅谈MySQL的容量规划

《浅谈MySQL的容量规划》进行MySQL的容量规划是确保数据库能够在当前和未来的负载下顺利运行的重要步骤,容量规划包括评估当前资源使用情况、预测未来增长、调整配置和硬件资源等,感兴趣的可以了解一下... 目录一、评估当前资源使用情况1.1 磁盘空间使用1.2 内存使用1.3 CPU使用1.4 网络带宽二、

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright