|
音乐是人类天然的爱好与艺术追求之一。自古以来哲学家们对人类是怎样欣赏艺术,怎样创作有着浓厚的兴趣。而很早的时候,人类便对音乐有了诸多的理论。在音乐史上,作曲家们也没有停止过对作曲技巧的总结和归纳。随着现代化的发展,人工智能概念的提出,人们渐渐产生了可不可以让计算机利用算法进行音乐创作的想法,于是算法作曲的概念应运而生。9 R* w) w, Y* D9 c! g6 |& a2 @* t
( y* L) O) B) ~ | R, r3 m
应用价值
, C" Y( @- o" b7 c9 s. _3 j; G _. ~9 N) o, n. U
计算机目前的作曲水平还是初级,乐曲中的和弦部分由人工干预实现。尽管尚处于起步阶段,尽管尚处于起步阶段,但这项技术的应用前景相当广泛,在广告、社交、娱乐、AR、VR等多个场景均有施展空间。设想一下,以后新婚夫妇只要上传结婚照,就可以让人工智能定制专属音乐。此外,这项技术还应用于游戏领域。因此利用人工智能进行音乐创作的研究是有必要的。& b4 g( Y( `2 P9 ?
& |. b: d/ ^: F# @6 H% \9 k$ V
难点8 l8 w! |1 @8 k0 h% O. q8 ]' D
4 e0 K9 s1 p2 g% P q
1.知识规则表达问题
& z9 f3 ]& N' ~: L1 h! }% a1 m
) q' s' s# p- O" F5 I 任何一个算法作曲系统都不存在一个完美的表示旋律发展的技法。
6 U9 m* i. z1 q% \/ G6 [- \
* n9 U0 Y4 e6 @. N2 d# G, W2.音乐的创新问题% r" \& O5 ?; a# ^+ e, _ I
8 Q! g# `+ F# C1 G2 i; P5 n
由计算机自动生成的音乐作品,对于作曲家或者使用者来说是否具有实用性?这涉及到一个重要的问题,那就是我们使用算法作曲这样的方式进行音乐创作是为了模仿作曲家自身的音乐创作过程,还是为了模仿某类风格作品的题。2 |! h+ p: Q# V: h
0 H0 V( r. Q, K3.如何评估计算机生成的音乐作品的问题
0 O0 A# {% k" x; m8 J
1 s' Q% K# Q" h* I由算法作曲生成出来的音乐片段是否能真正符合传统的音乐理论呢?显然,作曲系统中的质量评估机制是一个很重要的部分。它往往会引导音乐创作的方向,甚至最终决定音乐作品的成败。5 w) J0 l- |$ [1 n& O
F: L) G6 [' r+ |
4.如何对算法作曲的作品赋予人类的情感" l1 {. ~: ]) `" d
X( W% Y8 E1 }+ F+ r( O( z7 d" S
收获
1 E; W5 v. g5 n# B8 T* z/ y D) o2 r
1.通过对算法作曲的相关材料的阅读,对如何进行算法的设计有了一定的认识,锻炼了自己查找资料的能力,对以后的学习很有帮助。
7 G# g6 _; w* y3 } t; x! q
9 H( D) P6 A3 U* v7 x& r% c& m/ {( t2.对知识规则系统,马尔可夫链,深度学习等算法有了一定了解。* }0 ^/ \0 Y+ _) V% e7 u
6 C1 P9 C. H; M @
3.在遇到问题的时候应该多想想为什么,多从身边的小事找出其中蕴含的知识,不应该抱怨其存在的问题,应该从这些问题中找到解决问题或优化及改进的方法。( t8 \1 q2 O1 d. I* N. a& Y) j* t
) e* s( Y B2 {8 l K/ V
4.遇到一个大的难的问题时,不能被吓倒,而是应该静下心来,把大的问题细化和找出最本质的问题(即最小可操作的点),然后各个击破,最后会发现慢慢的问题已变明朗。
5 `) S* [% s2 a, e8 a- s5 E; \9 v' c' i/ l
综述
( @1 G# J. s5 i; T% z0 ?% A
% ^2 O5 h+ i ?. g$ R; F) i% a 通过查阅资料,目前研究算法作曲的方法有很多:) Z" ^ J1 ^* s$ A0 F$ x* `" i& s
* E6 z% b; |) R% J0 C6 \* W2 r
1.知识规则系统9 [8 ?" R- j k6 H1 m
# j( J* d$ I/ M$ Y6 M" a0 c$ q9 R
我们在一个作曲系统中建立一系列创作旋律的知识规则的集合,由计算机生成的每一条旋律都需要通过1个给定的知识规则的集合而产生的。基于知识规则的系统在复杂的音乐创作过程,其优点就是知识编码很清楚、能够从复杂的关系中得出结论。但是如果试图模仿基于作曲家创作音乐时所使用的所有作曲规则与技法,将其提炼出来,输入计算机中,这个趋势是很困难的。! b" ~# e5 `& e( I5 l; k
+ b+ }) w. A# M5 Q; }3 b
2.马尔可夫链& }) ]% s A& F) {+ C. G
8 L' d. k4 ]9 u9 o; I4 z- Y+ c马尔可夫链一直被广泛地应用于算法作曲领域中,是按照个转换表来依次选择音符。这个转换表就像一个函数,其自变量是当前的音符,而函数值则是下一个要出现音符的可能性。转换表可以按照·定的标准人为构造,其中嵌套个特定的音乐风格。针对某一特定(如某一作曲家或某一时期的)风格的音乐作品进千犷收集和统计,就可以构造出相应的转换表。而这个转换表定义了这些特定音乐风格的作品中音符导向的可能性。转换表其实所表现的是旋律的风格的量化。马尔可夫链主要用于产生一条具有一定风格的旋律。这种方法可以模拟作曲家创作音乐时的思维,来控制计算机生成相应的音乐作品。我们可以进一步通过已有的旋律作为参数的输入,或者自定义其每个音符所出现的可能性来产生出一种全新风格的音乐作为输出。* f' p! u: t' l) T& d1 ~& q" _
$ F4 \" _2 D9 \& s3.深度学习/ Q0 B1 z+ x: K% S3 c( j3 D# Z
; S: i9 W" w/ J4 @2 p 从一个输入中产生一个输出所涉及的计算可以通过一个流向图(flow graph)来表示:流向图是一种能够表示计算的图,在这种图中每一个节点表示一个基本的计算并且一个计算的值(计算的结果被应用到这个节点的孩子节点的值)。考虑这样一个计算集合,它可以被允许在每一个节点和可能的图结构中,并定义了一个函数族。输入节点没有父亲,输出节点没有孩子。3 \6 N( @1 F/ X$ X8 _
; l, L. @( R$ K6 T5 i& Q
3 {9 K$ w, y% i: g, S; {最下面蓝色的部分是你输入的音乐。从上图可以看出,input是一个个的点,然后通过input来相互结合生成灰色的点,经过几层的连接之后,最后的Output就是新生成的音乐,也就是黄色的点。把黄色的点拉下来,就生成里新的音符。是根据之前的所有音乐来生成音符。% D4 w" `4 A6 H/ @' x
) W' N8 i ^2 O( A
+ ?2 e+ ]: p' v, ^# ~% v4.SOFM
: ]/ e& G" w1 F# M( ]- K, z& j" r9 B; G7 R& d+ A, T, u7 {7 s
自组织特征映射网络(SOFM)是自组织网络中的一种,所谓的自组织过程是指学习的结果总是使聚类区内各神经元的权重向量保持向输入向量逼近的趋势,从而使具有相近特性的输入向量聚集在一起。这种结构的网络能够从输入信息中找出规律以及关系,并且根据这些规律来相应地调整网络,使得以后的输出与之相适应。
5 P7 j6 i4 n3 T7 I8 {& }
/ o1 Y e( b$ M) j* W1 ?$ g 0 i+ P H" y9 X1 Z/ u
8 f9 c. f7 L& r4 d分析( J7 W$ Q) w S* n/ a$ G: s" i
5 O6 f2 T- R) i2 {% t# _5 X2 g8 v 通过对这些资料的阅读,对这些方法有了一定的了解,那我自己会怎样用人工智能谱曲呢?+ Y5 @' Y$ X/ ]" _
4 g( T0 v6 w! }& N3 W! S4 ^# { T! L. {
对于谱曲算法,我的想法是这样:: c2 v. i3 U% b" H- U" q
6 m2 r) o, A4 L& R/ n0 e, P1.利用启发式信息,搜索长度为10的一段旋律的部分可能解。; J" [+ T9 J# v. Y
6 w2 e7 N h8 Q+ c说明:
/ q% Z: j1 B5 U9 L" F
% [+ x3 s# C; E# E(1)启发式信息:启发式信息可以是这个音和上一个或几个音、这个和弦和上一个或几个和弦的搭配程度,这个可以通过分析大量现有作品,从而获得一个概率表。例如,如果在很多乐曲中,两个和弦一起出现的概率很小,说明这两个和弦的组合是不和谐的,就不需要继续往下搜索了。
- \ V1 [9 R8 v3 I$ J: L& f# N# @. f
(2)长度为10:搜索长度不可以太长,否则计算量会很大。这也是这种方法的一大缺点。
5 S0 ` ?1 `: ?/ N/ P: r3 O0 K' w6 s' o+ s8 C& P
(3)部分可能解。为了简化计算,可以只在中音区搜索,即便如此,全部解仍有21的10次幂之多,不过考虑到启发式信息,我们只需要搜索一小部分解就可以了。$ |+ n. P- g2 b( O) i5 y8 ~
5 h+ |3 i( u0 T/ [9 u& W2. 随机输入+SOFM聚类。* o, \. r L6 ?, T
( P- R6 z6 ]+ w5 o上面的搜索法的缺点之一是没有创造性,缺少变化,我认为很重要的一点是在最优性和可行性之间选择了可行性。那么,有没有一种方法可以提高解的最优性呢?
1 d) T! P* L. e, g( l; t2 A
. X& Z* [, A/ J为了提高乐曲的长度,聚类是一种不错的方法。聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集,这样让在同一个子集中的成员对象都有相似的一些属性。+ H6 B$ \3 G! W1 ]# t9 U
9 ? _, ?* i% x5 w: |说明:
. r& e$ @0 W' M }, q' \
/ B* c2 `9 Z; f/ j& V(1)无规则的音符可以随机产生。
7 K, ]" \% ]( ?: a0 {, C9 P8 d
- Z: E5 d7 O' d! |(2)“相似”的定义可以是频率的接近,也可以是通过对大量乐曲的分析得到的一张相似性表。
: \' L9 u: g; U+ I |) M! R( q$ l1 Y, T
(3)和上面提到的搜索不一样,这种方法由于输入具有随机性,所以输出也富有变化,避免了单调,而且单次计算复杂性很低,可以模拟出人类的情感。不足的是,这种方法聚类的结果不一定和人类的口味,所以同样需要大量计算,从中选择我们喜欢的解。
& z# g/ y: F4 b1 P ]4 Y0 g. U# D/ u" ^
) g# u6 _5 m9 g1 Z
0 B1 `# J: ]/ @+ T. Q3. 遗传算法。
8 L( A T+ R0 y9 Z- }+ ]3 F4 n
+ h% G: d8 h2 d/ @, C遗传算法是学习大自然中生物的进化,过程是这样的:将音符的排列组合编码成一组基因群体,从群体中选择父代,父代通过随机扰动产生随机变化,通过适应性函数选择优秀的个体,加入群体并下一次进化,直到找到可行解为止。
9 T5 m% Y7 V& r# Z: C9 t. q3 S7 s9 z" S) ] m7 |" W
说明:
1 w# R1 l. j+ R! ^9 Y6 Y) M9 B
0 G4 ^; O5 X" |& b G(1)编码:把音符的顺序映射为生物的基因。
+ u+ L0 E6 D# ]0 C4 F U8 P) b
8 X8 E, Q- L5 M5 l6 _* b(2)随机扰动:每一代进化以后,随机产生扰动,随机对音符进行交叉(重组)、变异(改变某一位的音符),实现解的多样化,从而尽量实现整体最优。) @2 z( f9 _4 Z, @9 v& }+ g
( |) Q% h0 H# r6 D. n(3)选择:进化以后通过适应度函数选择,找出最适应环境的个体,进行下一次进化。6 E+ m9 ^5 N5 Z8 z
1 ?: {0 J& S f4 Y! K ]: k1 e, U! L1 y
(4)适应性函数:评价解的优劣性,在这里就是曲子的“悦耳度”,体现在数学上可以使不同音符、和弦相连的概率,也可以是和名作片段的相似性等。
! k) z3 y* h Q: V. b! I) P( E
7 n8 ]# j) y$ K- I0 i& H) D & d3 }: g1 s0 K. c- U; c
" k/ ~) k: x+ S9 m, i% c" j结论
& M p, [( }7 O7 t# ~4 B4 p2 L( `+ w7 w7 _5 @* w5 m) H2 S
通过对这些论文的阅读,算法作曲已经不是难事,索尼,谷歌等一些公司已经创作出一些音乐了,听过之后我觉得对已有音乐的模仿是容易达到的,但无论人们开始时是怎么想的,音乐表现远比句法规则所能捕捉到的东西要多得多。在很长的一段时间之内,计算机作曲程序谱出的乐曲不会产生新的美感。不仅仅是音乐,所有艺术作品,对于我们来说,都是一种表达。它所展现的内容和情感远远不止是那些规则和技法所能捕捉到的。它必须来源于一种体会,而这暂时来讲还是机器所无法达到的。但我相信,通过神经网络模型,机器学习和人工智能算法的不断发展,创作出的音乐将会越来越好。 |
|