Day 7: 人工智慧在音乐领域的应用 (有趣的AI演算法一)

前面几天我们讲完了AI经过了几次大起大落,最後在AlphaGo一战封神後被推向最高端,机器学习/深度学习成为人人所追逐的技术。

但如同我们前面一再强调的: 机器学习/深度学习虽然热门,但他只是众多AI里的一个分支而已,所以今天我们就来简单的介绍一些比较常用的或是比较有趣的AI演算法。
(那你到底什麽时候才要讲AI作曲......)
https://ithelp.ithome.com.tw/upload/images/20210922/20140556tWNPOvQ4Oc.jpg

什麽是演算法?

这边我们先帮比较没有资讯/程设背景的人做个简单的介绍,如果你看到这边已经一边在挖鼻孔一边想"看这个要干嘛"的话,
https://ithelp.ithome.com.tw/upload/images/20210922/20140556u21mgn4uKr.jpg
开个玩笑~麻烦你去泡碗泡面,然後自动跳过这个部分。

话都说到泡泡面了,我们就拿泡泡面来当作例子解释什麽是演算法。
首先,如果今天你要泡泡面来吃,那麽最常见的步骤就是:
https://ithelp.ith!ome.com.tw/upload/images/20210922/20140556ElvVOv5XDw.jpg
吹含吸舔抠

  1. 买泡面/找出家里有的泡面
  2. 撕开包装
  3. 加入调味料
  4. 倒入热水
  5. 盖着等三分钟 (具体时间依照你想要的面体软硬调整)
  6. 吃泡面

以上的步骤,就可以把它当成泡泡面来吃的演算法

因此我们可以把演算法理解成:
一个已经被完整定义/规范好,并且可以让电脑自动执行的程序/步骤。

那麽AI里面有哪些有趣的演算法呢?
这边我们选择一些比较有趣或是最常被提及/使用的做个简单的介绍:

演化式计算 (Evolutionary Algorithm)

在AI的各种演算法里,有许多都是以模拟人类/生物的特性所设计出来的演算法 (後续会一一介绍),
而演化式计算就是模拟自然界物种生态而产生出来的一种演算法,里面包含了如:
基因演算法 (Genetic Algorithm, GA)
演化式策略 (Evolutionary Strategy, ES)
基因程序设计 (Genetic Programming, GP)
等等,而这些演算法的的核心以达尔文的物竞天择,适者生存为主轴。
https://ithelp.ithome.com.tw/upload/images/20210922/20140556KYl9BrDbR3.jpg

简单一点的来说的话,这类型的演算法(这三个在运行上有些许步骤差异)会针对要解决的问题,去
(1) 随机乱数的给予一定数量的个体
(2) 而这些个体彼此之间会互相交配并产生子代
(3) 子代有机会产生些微的突变
(4) 把所有亲代以及子代 集合起来,根据问题所划出的标准去做筛选,把不符合标准或是得分(看问题如何定义)较低的後半部份个体淘汰 (不适者淘汰)
(5) 步骤(4) 存活下来的较好个体成为下一个世代的亲代 (适者生存),接着回到步骤(2) 并不停的重复这些过程,直到达成预设的目标或是演化的世代 (每次2~5为一个世代) 到达设定的数目。
(6) 最後,活到最後一代的个体里面,选出最好的那一个天选之人 ,即为最後的解。

听起来很复杂的话,我们举个例子来说明
(以下纯粹是学术性的假想,所以不要有残忍或是什麽其他的想法)
https://ithelp.ithome.com.tw/upload/images/20210922/20140556TJ4Ck7XYTj.jpg
如果今天在一个实验室里,科学家们希望可以培养出可以飞的小狗,那麽首先我们要
(1) 找一百只狗来当我们的最初的个体
(2) 这些狗彼此之间交配并生下另外一百只小狗 (子代)
(3) 生出来的 小狗 (子代) 都有机率发生一些 突变
(4) 接着把所有的狗,做个飞行能力 (此实验的得分标准) 的测试,测试结果比较差的一百只狗,把他们给......送人~
mf

因此这一百只在飞行能力评比上表现较差的,就离开了这个实验 (不适者淘汰)
(5) 步骤(4) 表现较好的一百只狗成为下一个世代的亲代 (适者生存)
接着我们再回到步骤(2) 并不断的重复,直到我们
(6) 成功的演化出一只会飞的狗,或是我们可能因为时间与资金有限,所以只能运行100个世代,一百个世代结束之後,如果我们没有成功的演化出会飞的狗 ,那麽存活到最後的一百只里面,飞行能力测试成果最好的就是我们的最後解。

这样的解释有没有对於演化式计算有比较清楚的初步了解了呢?
认真的同学这边可以先做一下笔记,因为之後的某一天里我也会更深入的介绍演化式计算要如何应用在AI作曲上面。但也不用担心,真的忘记了再回来复习就好。

那麽明天我们再来继续聊聊其他有趣的AI演算法,或是放弃停刊。


<<:  Day22 AWS - SignUp & MFA

>>:  【没钱买ps,PyQt自己写】Day 7 – 我们的第一个 input 手段 - QPushButton

EPC 事件驱动图

EPC (Event Driven Process-Chain) 事件驱动流程链是一种流程图应用在业...

会议

你喜欢开会吗? 虽然我蛮难想像真的有人喜欢会议。但正如已故 Intel CEO,管理教父 Andy...

Rust-Hello, World!

先建立一个hello的目录,编辑main.rs fn main() { print!("H...

【第十五天 - Flutter 官方 CodeLab Get-To-Know 活动报名教学(下)】

前言 我很喜欢这篇 CodeLab,我自己认为,如果这篇的内容看得懂那 Provider 基本上都会...

让我们从 Motion 设计开始

Web Motion 动态特效网页 Motion 一般翻作为「动态」,具有时间轴的概念,包含「动」的...