昨天我们聊完了子代出生後所要面临的第一个挑战 - 突变。
我们接着来聊聊整个基因演算法里面最重要的一块
如何评估音乐的好坏来决定演化方向
也就是所谓的适应值函式 (Fitness Function)。
稍微回忆一下我们前面聊过的一些例子,例如爬山法理面,我们希望找到25宫格里面的最大数值; 蚂蚁演算法里,目标是找到最短路径; 这些都是非常容易量化的标准。然而今天在我们使用基因演算法来作曲的时候,你必须要让AI了解怎麽样的音乐才是好的音乐
,而这正是AI对於艺术创作里面最难的部分。由於音乐的好坏是相当主观的且相当难被量化,因此怎麽样才能让基因演算法得到一个正确的评估方向就是能不能创作出好听的音乐的重点。
那麽我们先把Fitness Function这个部分的流程介绍一下,待会再来解释基因演算法里最软的这一块
。
我们再来快速复习一下基因演算法的流程:
(1) 产生个体 (Individual)
(2) 交配 (Crossover)
(3) 突变 (Mutation)
(4) 评分 (Fitness Evaluation)
(5) 适者生存不适者淘汰 (Survivor Selection)
(6) 选出最强的个体成为最佳解
在我的们子代从步骤(2)被生出来後,紧接着经过步骤(3)的突变洗礼,接着就要被步骤(4)的适应值函式给一一做评分,评分的目的是为了评估每一个个体的好坏以及成为步骤(5)里面是否能够存活的依据。
换个角度想,这就是一场大型的鱿鱼游戏 (以下无暴雷请安心服用),而你身为掌管全局的人,可以自行决定要让猜赛者玩什麽样的游戏 (Fitness Function),再进一步靠你所决定的游戏 (Fitness Function)来淘汰弱者并且留下强者。
回到本篇重点,要如何才能让AI知道怎麽样的音乐是好的而怎麽样的音乐是坏的呢?
第一个直觉的想法:
既然音乐是主观的,而决定这项喜好的又是人类,
那麽就直接让人类来当Fitness Function的评分员吧。
而这样的机制就是所谓的互动式遗传演算法 (Interactive Genetic Algorithm, IGA)。
流程来说就是在每次需要评分的时候,就让人类参与进来这个过程,并且针对每一个要做评分的个体给予一个分数,例如我们将音乐的分数标准订为 0~100,则担任评分员的人类在听过每一首演化出来的音乐之後就依照自身的喜好给予一个分数,这样子的评分机制,可以让演化的结果最後朝着参与评分人员心理最主观的好听的音乐方向去演化,相对的来说也比较容易创作出符合个人喜好的音乐。
然而IGA的缺点也很明显,假设我们设定的个体数量为100,而演化的世代(Generation) 也设定为100就好,这代表每一个世代中,担任评分员的人类必须要完全听过这100首音乐并给予评分,100个世代总共就要对10000首音乐做评分,先不提这过程的旷日费时 (假设一首音乐30秒,每一个世代就要花费至少50分钟,一百个世代就要花费八十几个小时),这过程中最大的问题在於人类对於这样的过程很容易产生听觉疲劳,试想如果你要一次听一百首音乐,这个过程还要重复一百次,那麽有非常高的机率在你累积疲劳到一定程度後,你已经无法准确的分辨哪些音乐好听哪些音乐难听,而这就大大的影响了演化的方向与品质,导致最後产生的音乐并不是经过适当的评估而产生出来的最佳结果。
那麽是否有其他的方式可以避开这样的听觉疲劳问题呢?我们留待明天再继续跟大家聊聊 基於规则(Rule-Based) 的 适应值函式(Fitness Function) 要怎麽设计。
此篇为番外,未收入在本篇是因为 Browserslist 并不是个工具,而是个会常被各种转译器采用...
基於昨天所阐述的简易对话流,我们今天来快速实作一个看看! 为求各位能迅速上手,我们将打造一个蒐集用户...
前言 第二次参加铁人赛,在决定参赛时,就又让人想起连续30天不间断发文的痛苦,但是要用什麽主题来做为...
IT business is one of the most famous in the busin...
人的科技文明发展始终来自於人性 在科技发展发达的现今,各式各样的技术成熟,在很多的领域都可以发现各种...