生成式藝術和演算法創作08-馬爾可夫模型

- ofollow,noindex">生成式藝術和演算法創作01-概述
- 生成式藝術和演算法創作02-隨機和噪聲
- 生成式藝術和演算法創作03-混沌和分形
- 生成式藝術和演算法創作04-規則系統
- 生成式藝術和演算法創作05-Tessellation
- 生成式藝術和演算法創作06-形狀語法
- 生成式藝術和演算法創作07-向自然致敬的 L-system
馬爾可夫模型 Markov Model
開始的開始,有必要來認識一下主人公,俄國數學家安德雷·安德耶維齊·馬爾可夫。

1874 年,18 歲的馬爾可夫考入聖彼得堡大學,師從切比雪夫(著名的切比雪夫定理提出者)。他是物理-數學博士,聖彼得堡大學教授,聖彼得堡科學院院士。在概率論、數論、函式逼近論和微分方程等方面卓有成就。
總的來說,馬爾可夫模型是一種 統計模型 ,可以用於計算條件概率分佈,為一系列的離散事件建模。這就應用很廣泛了,哪些是「離散事件」呢?句子中的詞彙,音樂中的音符,通過交通燈的車輛數,女票每個月購物的次數……
以「馬爾可夫」開頭的術語有很多,先來熟悉一下最重要的幾個:
- 馬爾可夫性質:當一個隨機過程在給定現在狀態及所有過去狀態情況下,其未來狀態的條件概率分佈僅依賴於當前狀態。
- 馬爾可夫過程:是一個具備了馬可夫性質的隨機過程,不具備記憶特質(memorylessness)。換言之,馬可夫過程的條件概率僅僅與系統的當前狀態相關,而與過去歷史或未來狀態,都是獨立、不相關的。
- 馬爾可夫鏈:具備離散狀態的馬可夫過程,通常使用離散的時間集合定義。
- 馬爾可夫模型:用馬爾科夫過程生成序列的演算法模型
它們之間的關係大概可以這樣劃分:
系統狀態是完全可觀察的 | 系統狀態是部分可觀察的 | |
---|---|---|
系統是自治的 | 馬爾可夫鏈 | 隱馬爾可夫模型 |
系統受到控制 | 馬爾可夫決策過程 | 部分可觀察的馬爾可夫決策過程 |
在馬爾可夫模型中
-
是時間 t 時表示音符的隨機變數
-
是隨機事件
的概率分佈

馬爾可夫模型可以基於「上文」做出判斷和預測,未來狀態只取決於當前狀態或者限定範圍的過去狀態。
實現馬爾可夫模型的學習演算法有幾個步驟:
- 構建一個 transition count table (state transition matrix),計算每一種可能的上下文的頻率分佈
- 用每一種組合的 count 除以所有的組合總數,即下表中每一行加起來為 1
- 隨機選擇一個起始值,根據概率表格選擇下一個序列值
馬爾可夫模型生成演算法其實也是一種 random walk ,根據轉換概率分佈,基於目前已經生成的序列,隨機選擇下一個序列值。
以一段樂曲為例,它由音符 B2,C4#,D4,E4,F4#,G4,G4#,A4,B4,C5#,D5,E5 組成。計算每一個音符後面緊跟著的音符的出現概率。例如,最後一個音符 E5,出現在它後面的音符只有 A4 和 C5#,出現概率分別是 6/16 和 10/16。當生成新的序列時,如果當前音符是 E5,那麼根據表格,下一個音符只可能是 A4 或 C5#。

再來看一個三節點的馬爾可夫鏈:

這首馬爾可夫旋律以 state_0 開始,播放一個八分音符 Eb。然後選擇一個新的狀態。選擇 state_0,state_1 或 state_2 的概率相等,都是 1/3。假設選擇了 state_2,則播放下加二間的十六分音符 G。從 state_2 開始,state_0 被選擇的概率是 1/10,state_1 是 2/10,state_2 是 7/10。
因為馬爾可夫模型狀態是離散的,可以用有限狀態的自動機 (automata) 來表示。

變數馬爾可夫模型
在隨機過程中,變數馬爾可夫(Variable order Markov Models/VOM/VMM/VOMM)模型是一類重要的模型,它擴充套件了馬爾可夫模型。
馬爾可夫模型中,具有馬爾可夫性質的序列中的每個隨機變數,取決於固定數量的隨機變數;在 VOM 模型中,該數量的調節隨機變數可以基於觀察到的特定實現而變化。
這個實現序列通常被稱為上下文 ; 因此 VOM 模型也稱為上下文樹。調節隨機變數數量的靈活性對於許多應用來說是非常有利的,例如統計分析、分類和預測。
變數馬爾可夫模型一般由三部分組成:
- Counting:建立轉換表,這是預測的來源
- Smoothing:處理未見過的事件/序列
- Variable length modeling:
- A transition matrix
- Probabilistic suffix tree
- Factor Oracle, and Context Tree Weighting method (CTW)
- Lempel-Ziv 78 and its improvement LZ-MS
- Prediction by partial match
它的缺點之一是難以產生語料之外的內容。
隱馬爾科夫模型 Hidden Markov Model
隱馬爾可夫模型(Hidden Markov Model,HMM)是統計模型,它用來描述一個 含有隱含未知引數的馬爾可夫過程 。其難點是 從可觀察的引數中確定該過程的隱含引數 ,然後利用這些引數來作進一步的分析,例如模式識別。
在一般的馬爾可夫模型中,狀態對於觀察者來說是直接可見的。這樣狀態的轉換概率便是全部的引數。
而在隱馬爾可夫模型中,狀態並不是直接可見的, 但受狀態影響的某些變數是可見的 。每一個狀態在可能輸出的符號上,都有一定的概率分佈。因此輸出符號的序列能夠透露出狀態序列的一些資訊。

也就是說,HMM 系統的實際狀態是隱藏的,只能觀察到 emission probilities。
HMM 常用來學習兩個耦合的內容語料。例如,在語音識別中,可見的資訊是音訊訊號,隱藏的資訊是語音詞彙。又例如,旋律是可見資訊,伴奏/ 和聲 是隱藏的資訊。
最常見的三種 Hidden Markov Model 演算法:
- the forward algorithm: 計算特定序列的概率,假設已知 transitions and observation 概率和初始狀態
- the Baum-Welch algorithm:找出被觀測序列中最常見的引數
- the Viterbi algorithm:維特比演算法,基於觀測序列計算隱藏狀態最可能的序列(viterbi path)
隱馬爾科夫模型的優勢:
- 是學習和生成離散序列最有效和使用廣泛的演算法
- 可以對橫軸和縱軸的相關性都建模,HMM 是隨機耦合過程
- 比馬爾可夫模型更好保留原始的資料結構
劣勢:
- 需要有很好的領域知識來調整模型結構和引數
- 需要相對大的訓練資料集
馬爾可夫模型在音樂中的應用
Lejaren Hiller 在 1957 年完成了演算法生成的絃樂四重奏「依利亞克組曲」(Illiac Suite),這也是歷史上第一支完全由計算機生成的音樂作品。首先使用馬爾可夫鏈模型來產生有限控制的隨機音符,之後利用和聲與復調的規則測試這些音符,最後選擇符合規則的材料,修改、組合成傳統音樂記譜的絃樂四重奏。
[圖片上傳失敗...(image-ecba91-1543588728051)]
Lejaren Hiller - Illiac Suite for String Quartet [4/4] - YouTube
- 第一樂章:計算機生成的不同長度的固定主題旋律
- 第二樂章:使用變奏的規則生成的四聲部音樂
- 第三樂章:通過計算機對節奏、動態和演奏法的不同處理生成的音樂
- 第四樂章:通過衍生演算法和馬爾可夫鏈的不同模型及概率生成的音樂(pitch, intervals and textures)
Iannis Xenakis在他 1958 年的專輯 Analogique 中就使用了馬爾可夫鏈來作曲。

image
在他的著作 Formalized Music: Thought and Mathematics in Composition 裡詳細描述了使用馬爾可夫模型的演算法。

image

用馬爾可夫模型生成音樂的優勢,包括符合直覺、容易理解,以及計算量小。但也存在一些問題。例如,輸出相當隨機、缺乏整體結構;抽象層級有限,容易重複語料庫中的片段;限於一維符號序列;限於風格模仿等等。
Ref
- Markov model - Wikiwand
- 馬爾可夫性質 - Wikiwand
- 馬可夫過程 - Wikiwand
- 隱馬爾可夫模型 - Wikiwand
- Variable-order Markov model - Wikiwand
- Markov Chains explained visually
- Three Node Markov Chain
- 演算法作曲歷險記01-簡史 | 00's Adventure
- Iannis Xenakis - Wikiwand
- Harmonic Progression
- Realtime Generation of Harmonic Progressions Using Controlled Markov Selection | PDF