Skip to content

UserNameForGithub03/ai_composition-using-genetic-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

机器作曲·遗传算法

这是一个基于遗传算法的机器作曲项目。指导进化方向的适应度函数使用了循环神经网络(RNN)和旋律音程的和谐判断。

基于神经网络的适应度函数

训练集

训练集是文件夹data中的30段单音列旋律。我们将旋律的音高、时值转化为numpy数组的形式作为输入。

主要原理

全连接神经网络的原理是利用反向传播算法来训练模型,通过不断调整权重和偏置来使得模型的输出结果与真实值之间的误差最小化。

RNN(循环神经网络)是一种神经网络模型,主要用于处理序列数据和具有时间依赖性的数据。它的主要原理是引入循环连接,使网络能够记忆之前的信息并将其应用于当前的输入。

我们用了 binary cross loss 作为判断神经网络是否优秀的损失函数,假设我们的输出为 $y$,而真实的标签为 $\hat y\in {0,1}$,则损失函数为 $-(\hat y\log y+(1-\hat y)\log (1-y))$。为了使我们的输出在 $[0,1]$ 之间,我们使用了 sigmoid 函数($y=\sigma(x)=\frac{1}{1+e^{-x}}$)

初始种群

采用随机生成的片段。

遗传算法

按照适应度函数作为概率,随机选择父本母本。适应度越大,成为亲本的可能性越大。将父本和母本的乐段各取一半拼在一起。并有$0.05$的概率基因突变。还有基因重组的变异方式。 其中,遗传算法的变异操作有:移调变换、逆行变换、倒影变换。

实验成果

在music.zip中存有我们生成的部分片段。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages