一言以蔽之:結合基因演算法來找出高適應度的神經網路。
早在人工智慧深度學習蔚為風潮之前,基因演算法(genetic algorithm)就已經被用在combinatorial optimization這類研究生物和社會現象的網路科學。那如果基因演算和神經網路能夠強強聯手,是否能發揮一加一大於二的效用呢?
在訓練神經網路的時候,有些參數通過訓練得到的,然而有些參數是無法訓練的,它們就是hyperparameter。舉一個簡單的網路Y=W0+W1*X1+W2*X2+…為例子,節點權重W就是利用大數據X訓練出來的,但是iteration, batch size, epoch, hidden layer number這些都是超參數,必須事先決定。
超參數的選取方法,是很講究經驗的,通常會先預設一組,之後再看訓練過程而慢慢調整,基因演算法就可以用來調整超參數。舉個例子來說,現在只有二個超參數batch size和hidden layer number要決定,我不知道batch選多大、hidden要用幾層才能降低training cost。
- 先建立五個網路,分別是(batch,hidden)=(64,3)、(128,10)、(256,7)、(512,5)、(1024,20)去訓練,就能得到這五個網路的training cost。
- 取fitness(適應度)為training cost的倒數,五個網路中,fitness越高的,其繁殖的機會就越高。
- 根據fitness概率選取二個網路來繁殖基因(偶爾也可以加入基因突變),產生子網路的超參數,再訓練這個子網路得到新個體的training cost和fitness。
- 不斷地重複繁殖網路,最後可以得到族群中最大適應度的網路,這個網路就是training cost最低的。
從上面這個例子,其實就可以看出天擇論的演化機制,因此把這方法稱呼為基因演算法或遺傳演算法。
基因演算法的好處是,最終找出來的神經網路之適應性很強,而且在繁衍的過程中,可以清楚地記錄每一個新生個體的父母親,進而理解哪些繁殖是有利的、哪些繁殖是不利的,也就是可以識別出機器學習的策略。基因演算法的缺點是,就跟自然演化一樣,需要很長的時間,才能收斂出高適應性的個體。