前面几天我们讲完了AI经过了几次大起大落,最後在AlphaGo一战封神後被推向最高端,机器学习/深度学习成为人人所追逐的技术。
但如同我们前面一再强调的: 机器学习/深度学习虽然热门,但他只是众多AI里的一个分支而已,所以今天我们就来简单的介绍一些比较常用的或是比较有趣的AI演算法。
(那你到底什麽时候才要讲AI作曲......)
这边我们先帮比较没有资讯/程设背景的人做个简单的介绍,如果你看到这边已经一边在挖鼻孔一边想"看这个要干嘛"的话,
开个玩笑~麻烦你去泡碗泡面,然後自动跳过这个部分。
话都说到泡泡面了,我们就拿泡泡面来当作例子解释什麽是演算法。
首先,如果今天你要泡泡面来吃,那麽最常见的步骤就是:
吹含吸舔抠
以上的步骤,就可以把它当成泡泡面来吃的演算法。
因此我们可以把演算法理解成:
一个已经被完整定义/规范好,并且可以让电脑自动执行的程序/步骤。
那麽AI里面有哪些有趣的演算法呢?
这边我们选择一些比较有趣或是最常被提及/使用的做个简单的介绍:
在AI的各种演算法里,有许多都是以模拟人类/生物的特性所设计出来的演算法 (後续会一一介绍),
而演化式计算就是模拟自然界物种生态而产生出来的一种演算法,里面包含了如:
基因演算法 (Genetic Algorithm, GA)
演化式策略 (Evolutionary Strategy, ES)
基因程序设计 (Genetic Programming, GP)
等等,而这些演算法的的核心以达尔文的物竞天择,适者生存为主轴。
简单一点的来说的话,这类型的演算法(这三个在运行上有些许步骤差异)会针对要解决的问题,去
(1) 随机乱数的给予一定数量的个体。
(2) 而这些个体彼此之间会互相交配并产生子代。
(3) 子代有机会产生些微的突变。
(4) 把所有亲代以及子代 集合起来,根据问题所划出的标准去做筛选,把不符合标准或是得分(看问题如何定义)较低的後半部份个体淘汰 (不适者淘汰)。
(5) 步骤(4) 存活下来的较好个体成为下一个世代的亲代 (适者生存),接着回到步骤(2) 并不停的重复这些过程,直到达成预设的目标或是演化的世代 (每次2~5为一个世代) 到达设定的数目。
(6) 最後,活到最後一代的个体里面,选出最好的那一个天选之人 ,即为最後的解。
听起来很复杂的话,我们举个例子来说明
(以下纯粹是学术性的假想,所以不要有残忍或是什麽其他的想法)
如果今天在一个实验室里,科学家们希望可以培养出可以飞的小狗
,那麽首先我们要
(1) 找一百只狗来当我们的最初的个体。
(2) 这些狗彼此之间交配并生下另外一百只小狗 (子代)。
(3) 生出来的 小狗 (子代) 都有机率发生一些 突变。
(4) 接着把所有的狗,做个飞行能力 (此实验的得分标准) 的测试,测试结果比较差的一百只狗,把他们给......送人~
因此这一百只在飞行能力评比上表现较差的,就离开了这个实验 (不适者淘汰)。
(5) 步骤(4) 表现较好的一百只狗成为下一个世代的亲代 (适者生存),
接着我们再回到步骤(2) 并不断的重复,直到我们
(6) 成功的演化出一只会飞的狗,或是我们可能因为时间与资金有限,所以只能运行100个世代,一百个世代结束之後,如果我们没有成功的演化出会飞的狗 ,那麽存活到最後的一百只里面,飞行能力测试成果最好的就是我们的最後解。
这样的解释有没有对於演化式计算有比较清楚的初步了解了呢?
认真的同学这边可以先做一下笔记,因为之後的某一天里我也会更深入的介绍演化式计算要如何应用在AI作曲上面。但也不用担心,真的忘记了再回来复习就好。
那麽明天我们再来继续聊聊其他有趣的AI演算法,或是放弃停刊。
>>: 【没钱买ps,PyQt自己写】Day 7 – 我们的第一个 input 手段 - QPushButton
EPC (Event Driven Process-Chain) 事件驱动流程链是一种流程图应用在业...
你喜欢开会吗? 虽然我蛮难想像真的有人喜欢会议。但正如已故 Intel CEO,管理教父 Andy...
先建立一个hello的目录,编辑main.rs fn main() { print!("H...
前言 我很喜欢这篇 CodeLab,我自己认为,如果这篇的内容看得懂那 Provider 基本上都会...
Web Motion 动态特效网页 Motion 一般翻作为「动态」,具有时间轴的概念,包含「动」的...