读十堂极简人工智能课笔记03_遗传算法与进化

1. 寻找正确答案

1.1. 卡尔·西姆斯

1.1.1. 计算机图形艺术家和研究者

1.1.2. 演示过数字进化之创造性和新颖性的先驱

1.1.3. 1994年

1.1.3.1. 创造一批能游泳、走路、跳跃,甚至互相竞争的虚拟动物震惊了整个科学界
1.1.3.2. 它们的人工大脑却是个极其复杂的网络,信息经由传感器的输入,经过大量的数学函数计算和操作,才能产生那些看起来很聪明的动作和表现

1.1.4. 这些动物并不是西姆斯直接编程产生的

1.1.4.1. 他并没有设计这些动物
1.1.4.2. 他并没有生成它们的身体,也没有创建它们的大脑
1.1.4.3. 西姆斯的虚拟动物是进化而来的

1.1.5. 如果一个控制系统某一天真的产生了“智能”行为,这个系统可能已经复杂混乱到我们无法理解的地步

1.2. 艺术家威廉·莱瑟姆和斯蒂芬·托德

1.2.1. “变异者”程序

1.2.2. 莱瑟姆和托德的艺术作品都是计算机里进化出来的

1.2.3. 就像给动物配种一样,选择他们认为优秀的作品来配种

1.2.4. 从一片随机混沌中慢慢地涌现出不可思议的样式、盘旋卷曲的形状和超凡脱俗的图案

1.3. 智力其实就是改进的能力

1.3.1. 我们在学习一样东西时会不断练习,直到掌握到一定程度才停下来

1.3.2. 只要有更强大、更便宜、更受欢迎、更高效的解决方案,我们就会想办法寻找它

2. 人工生命的进化

2.1. 西姆斯使用了一种遗传算法来推动虚拟动物的进化

2.2. 他的品控标准(或称“适应函数”)就是动物能够游、走或跳得多远(越远越好)

2.2.1. 乌龟状动物的身体可能只是五个简单的方块,但它的大脑如果打印出来,打印纸的长度延伸出去能覆盖会议大会堂的很大一部分

2.3. 进化计算的实践者创造出了一个虚拟世界,让计算机自己繁衍出越来越好的答案,直到找到最佳答案

2.3.1. 遗传算法就是这样一种方法

2.3.2. 它的工作机制是先创造出一批可能都没什么用的答案作为初始群体,按适应度(也就是把问题解决得多好)给这些答案排序,然后让最适应的答案产生后代

2.3.3. 只要让遗传算法运行足够多代,剩下的答案就已经进化成高度适应的群体,能很好地解决它们所面对的问题

3. 由自然界启迪的优化方法

3.1. 遗传算法及其近亲(进化策略和进化编程)可以追溯到计算机科学的最早期

3.1.1. 使用遗传算法让代码自己进化(也就是自动调试我们所写的代码),让计算机实现自我编程

3.1.2. 遗传算法等技术将使人工智能实现自我修改,直到它们变得比我们更聪明

3.2. 蚁群优化和人工免疫系统是在20世纪90年代才出现的

3.2.1. 蚁群优化方法能给配送人员找出最佳路线,就像蚂蚁能找到食物和巢穴之间的最短路径一样

3.2.2. 人工免疫系统模仿我们自己身体里的免疫系统,能检测到计算机病毒,甚至能控制机器人

3.3. 粒子群优化方法能让虚拟粒子像寻觅鲜花的蜜蜂一样四处飞舞,以发现最佳解决方案

3.4. 越来越多的自然过程可以启发优化方法

3.4.1. 中心引力优化、智能水滴算法和河流形成动力学等方法

3.4.2. 基于大型哺乳动物的行为习惯

3.4.2.1. 动物迁移优化

3.4.3. 基于昆虫,甚至植物和水果的习性

3.4.4. 基于鸟类和鱼类的各种算法

4. 基于搜索的算法

4.1. 人工智能和搜索一直是携手并进的

4.1.1. 基于搜索的算法是人工智能的一个独特分支

4.1.2. 搜索是计算机科学家喜欢玩的一种烧脑把戏

4.2. 大多数受自然界启发的优化算法都是平行搜索方法,从一群分散在解空间各处的初始答案开始,各自同时往周边地带探索,寻找最好的答案

4.2.1. 优化算法动辄要搜索数百维空间,而且答案的质量往往难以确定,或者会随时间改变,又或者可能会有多个好答案

4.2.2. 算法甚至可以搜索空间的维度本身,增加或删除参数

4.2.2.1. 如果在四十维空间(由四十个参数值定义)里找不到答案,那么也许能在五十维空间里找到

4.3. 搜索是最近大获成功的强化学习等技术的组成部分

4.3.1. 通过搜索获取解决方案是极其困难的任务

4.3.2. 在每个阶段,通常的结果都是计算机被卡住,找不到一个好答案

4.3.3. 搜索的空间太大,无法在合理的时间内搜索到答案

4.3.4. 空间太复杂,无法有效导航

4.3.5. 空间本身的性质太容易改变

4.3.6. 测试每个潜在答案是否能解决问题所需的时间,限制了系统可以考虑的答案的数量

4.3.7. 答案越复杂,测试它所需的时间也就越长

4.3.8. 计算力的提升永远是杯水车薪,而且这种情况可能还会持续几十年,甚至几百年

4.3.9. 计算能力也不能帮助我们理解如何找出正确答案

4.3.10. 搜索只能帮助计算机找到问题的答案

4.3.10.1. 它总是需要我们的帮助来发挥它应有的作用

4.4. 自然进化是如何在一个似乎永无止境的可能性空间中搜索,并找到活生生的答案的

5. 进化中的机器人

5.1. 机器人大脑的构件可能是模拟神经元、有限状态机、规则集合,或数学方程,搜索则是黏合剂,把这些构件以正确方式组合起来,并连接到传感器和效应器,从而让机器人能执行真正的任务

5.2. 达里奥·弗洛里亚诺

5.2.1. 他让模拟神经元配置自己进化,来为机器人自动制造大脑

5.2.2. 并不满足于让大脑进化,他还想知道这种大脑是如何运作的

5.2.3. 探索了许许多多种进化出来的机器人大脑

5.2.4. 建造了由有机生物体启发的机器人躯体

5.2.4.1. 一些会走路的机器人
5.2.4.2. 一些像跳蚤一样蹦蹦跳跳的机器人

5.2.5. 两家无人机公司——senseFly和Flyability

5.2.6. 数字世界的进化论有着一个美妙之处:人类设计师的角色可以被降低到最低限度

5.3. 霍德·利普森和乔丹·波拉克

5.3.1. 复制了卡尔·西姆斯的想法,在虚拟世界中进化出可以移动的奇特虚拟生物

5.3.2. 使用3D打印机,将虚拟变成现实

5.4. 虚拟世界和我们自己的世界之间的“现实差距”

5.4.1. 在虚拟世界中可能正常工作的大脑和身体,不知何故在混乱、不可预测的现实世界中总是没法正常运转

6. 自我设计的计算机

6.1. 阿德里安·汤普森

6.1.1. 在1996年

6.1.1.1. 将进化计算与一种名为现场可编程门阵列(FPGA)的特殊芯片联系起来
6.1.1.2. 这些芯片最初设计的应用,是计算机网络和电信骨干网等需要快速推出新电路的场景
6.1.1.3. 与其设计一套电路并在昂贵的芯片制造厂里生产出来,你不如随时向FPGA发送特定信号来重新配置这个电路,它的内部组件会如你所愿地连接在一起,并存放在一个永久的存储器中

6.1.2. 面对同一个问题时,进化电路所使用的硅片面积要比出自人类设计师之手的电路少得多

6.2. 让计算机大脑本身的电路进行进化

6.2.1. 在FPGA中演化和测试了许多代的真实电路后,进化计算找出了有效的电路

6.2.2. 创造了古怪得有时几乎无法解释的电路

6.2.3. 这些电路比预期的要小,而且它们使用电子元件的方式也很反常

6.2.4. 芯片上显然不属于电路的部分仍然会以某种方式影响输出,让输出更接近理想值

6.2.4.1. 进化利用了底层硅片的物理特性,这是人类设计师想都想不到的招数
6.2.4.2. 设计甚至利用了环境,因为稍微改变一下温度,芯片就不那么好用了

6.2.5. 把这个电路设计部署到另一个看起来一样的FPGA上面,它就不再灵光了

6.2.6. 在更大的温度范围和多个FPGA上尝试进化,就会得到更可靠的解决方案

6.3. 进化只会设计出必要的东西,一点也不浪费

6.4. 许多困扰人类直觉的问题,可以用计算机进化论找到崭新的解决方案

6.4.1. 朱利安·米勒(2019)

6.5. 让计算机来负责进化电路并不容易,但多年的进展已经催生了新的技术,即将改变我们创造人工智能的方式

6.5.1. 研究人员仍然在可进化的硬件领域继续开拓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyjwt,一个强大的 Python 库!

文章目录 什么是PyJWT?安装PyJWTPyJWT的基本概念令牌(Token)头部(Header)载荷(Payload)签名(Signature)算法(Algorithm) 创建JWT解析JWT验证JWT高…

Python学习之路-爬虫进阶:爬虫框架雏形

Python学习之路-爬虫进阶:爬虫框架雏形 代码实现分析 明确模块之间的逻辑关系 五个核心模块和三个内置的对象是关键模块,需要优先实现 先抛开中间件,分析下它们之间的逻辑关系是: 构造spider中start_urls中的请求传递给调取器进行保存&a…

Json-序列化字符串时间格式问题

序列化字符串时间格式问题 一、项目场景二、问题描述三、解决方案 一、项目场景 最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json public static void TestJson(){DataTable dt new DataTable();dt.Columns.Add("Age", Type.GetType("Sys…

java8使用流

这种处理数据的方式很有用,因为你让Stream API管理如何处理数据。这样StreamAPI就可以在背后进行多种优化。此外,使用内部迭代的话,SteamAPI可以决定并行运行你的代码。这要是用外部迭代的话就办不到了,因为你只能用单一线程挨个迭…

天空之眼的观后感

天空之眼,一部反恐题材的电影。 原名eye in the sky,从一个不一样的视角来讲反恐的故事。 这里不提故事本身,知乎,豆瓣上有很多分享。 最初我是在公司组织的培训交流上看到这部电影的剪辑,当时仅作为培训的开始前的导入…

VMwareWorkstation17.0虚拟机安装Windows2.03

VMwareWorkstation17.0虚拟机安装Windows2.03 第一篇 下载Windows2.03第二篇 配置Windows2.03虚拟机机器环境第三篇 启动Windows2.03系统 第一篇 下载Windows2.03 1.Windows2.0原版软盘下载地址是 暂不提供,后续更新 2.Windows2.03虚拟机镜像下载地址是 Windows2…

STM32物联网(ESP-01S模块及STM32和ESP-01S通信方式介绍)

文章目录 前言一、ESP-01S模块介绍二、STM32和ESP-01S通信方式介绍三、什么是AT指令四、创建基础工程总结 前言 本篇文章我们开始正式进入STM32物联网的专栏,在这个专栏中将会带大家学习使用STM32进行联网,联网模块的话主要就是使用到了ESP-01S WIFI模块…

【深度学习】S2 数学基础 P5 自动微分

目录 自动微分 Autograd一元函数自动微分案例 自动微分 Autograd 深度学习框架,因为存在自动微分技术,可以自动计算梯度,这极大地提升了训练复杂神经网络模型的效率。从而无需繁琐的手动计算,避免错误的发生。 自动微分的核心原…

『运维备忘录』之 Zip 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

Java学习22--接口类

接口类的定义和实现 Java接口(Interface)是Java编程语言中的一个非常重要的概念。它是一个完全抽象的类,用于定义一组方法,这些方法由类来实现。接口定义了一个契约,即规定了类应该具备哪些方法,但并不实现…

WebStorm | 如何修改webstorm中新建html文件默认生成模板中title的初始值

在近期的JS的学习中&#xff0c;使用webstorm&#xff0c;总是要先新建一个html文件&#xff0c;然后再到里面书写<script>标签&#xff0c;真是麻烦&#xff0c;而且标题也是默认的title&#xff0c;想改成文件名还总是需要手动去改 经过小小的研究&#xff0c;找到了修…

单片机学习笔记---LCD1602

LCD1602介绍 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是一种字符型液晶显示模块&#xff0c;可以显示ASCII码的标准字符和其它的一些内置特殊字符&#xff08;比如日文的片假名&#xff09;&#xff0c;还可以有8个自定义字符 显示容量&#xff1a;…

centos7.9 搭建k8s

K3s -轻量级Kubernetes K3s 是轻量级的 Kubernetes。K3s 易于安装&#xff0c;仅需要 Kubernetes 内存的一半&#xff0c;所有组件都在一个小于 100 MB 的二进制文件中。 为什么叫 K3s? 我们希望安装的 Kubernetes 只占用一半的内存。Kubernetes 是一个 10 个字母的单词&am…

【AIGC】Stable Diffusion安装包

Stable Diffusion 的安装教程通常分为以下几个步骤&#xff1a; 一、安装 Python&#xff1a; 确保您的系统中已经安装了 Python&#xff0c;并且版本符合 Stable Diffusion 的要求。通常情况下&#xff0c;Python 版本应为 3.6 或更高版本。您可以从 Python 官方网站下载并安…

AlmaLinux更换鼠标样式为Windows样式

文章目录 前言先看看条件与依赖第一步&#xff1a;测试最终效果第二步&#xff1a;使用CursorXP修改鼠标样式CurosrXP安装CursorXP使用 第三步&#xff1a;Linux端环境搭建与命令执行UbuntuFedora其他系统均失败 第四步&#xff1a;应用主题 前言 只不过是突发奇想&#xff0c…

React:高阶组件|ref转发

高阶组件 参考文档&#xff1a;高阶组件 – React (reactjs.org) 高阶组件&#xff08;Higher-Order Components&#xff0c;简称 HOC&#xff09;是React中用于复用组件逻辑的一种高级技巧。具体而言&#xff1a;高阶组件是参数为组件&#xff0c;返回值为新组件的函数。 组件…

vue3 codemirror yaml文件编辑器插件

需求&#xff1a;前端编写yaml配置文件 &#xff0c;检查yaml语法 提供语法高亮 。 默认内容从后端接口获取 显示在前端 &#xff0c; 前端在codemirror 插件中修改文件内容 &#xff0c;并提交修改 后端将提交的内容写入服务器配置文件中 。 codemirror 通过ref 后期编辑器…

jacob使用教程---环境搭建及基本组成元素

参考资料: jacob的GitHub地址 jacob官网(个人感觉不重要) microsoft官方VBA文档(很重要,jacob所有的参数都来自于这里) jacob找COM组件 jacob环境配置教程 jacob将word转为各种格式 提取word中审阅内容 本人参考例子及相关资料 具有参考价值的博客 jacob操作e…

2024 前端面试题 附录3

这里记录的是昨天和今天原篇的知识点补充 原篇地址&#xff1a; 2024 前端面试题&#xff08;GPT回答 示例代码 解释&#xff09;No.41 - No.60 2024 前端面试题&#xff08;GPT回答 示例代码 解释&#xff09;No.61 - No.100 2024 前端面试题&#xff08;GPT回答 示例代…

【Python】通过conda安装Python的IDE

背景 系统&#xff1a;win11 软件&#xff1a;anaconda Navigator 问题现象&#xff1a;①使用Navigator安装jupyter notebook以及Spyder IDE 一直转圈。②然后进入anaconda prompt执行conda install jupyter notebook一直卡在Solving environment/-\。 类似问题&#xff1a; …