バイオのための機械学習概論


このスライドは **よくわかるバイオインフォマティクス入門** の第12章 **バイオのための機械学習概論** を輪講用にまとめたものになります。

---

## 生物マルチオミクス

そもそもオミクスってなに？
- 体の中に存在している分子を網羅的にまとめた情報
    - 例えば、DNA・RNA・たんぱく質・代謝産物などを分析対象とし、それぞれゲノミクス・トランスクリプトミクス・プロテオミクス・メタボロミクスに分類される

---

## なぜバイオの分野で機械学習をつかうの？
- 仮説駆動型→データ駆動型
- データ数が膨大だから研究者がひとつひとつ目で見るのが大変だから

--- 

- 仮設駆動型：「ある仮説を事前に設定し、その仮説を検証することで実験を進める手法」
- データ駆動型：大量のデータに基づいて意思決定や予測を行うアプローチ

---

## 機械学習ってなにができるの？
- 膨大なデータのパターンや特徴を機械に学習させることで**予測・分類**ができる

- ひとつひとつデータを見なくてもデータのパターンや特徴がわかるようになる

--- 

## 機械学習と一言で言っても手法がたくさんあって幅広い
##### この章では4つに絞って説明していく
- 確率的生成モデル
- 分類・回帰のための教師あり学習手法
- 深層学習
- モデル学習

---

## 12.2 バイオデータのための確率的生成モデル

生物データにはさまざまな**ノイズ**が含まれるから**確率モデル**を使っていこう

--- 

## ノイズってなに？
- 不要な情報のこと
- 学習モデルの精度向上に関係ないもの

**ノイズがモデルの精度向上に影響を与えすぎないために確率的に表現していく**

<!-- 
// 確率的生成モデルについて
// データXは、確率密度分布p(x)に従って生成される。 -->

--- 

## 確率モデルとは？
- 観測データの生成過程を表現する
- 確率分布のこと
![確率モデル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536502/b1b8fbee-c374-763e-6c53-f45e0f78e9fa.png)


---

## 確率モデルを使うと何がいいのか　
- データの生成過程に関する理解が深まる
- データの確率的な挙動を捉えることが可能
- 予測や分類の問題に応用できる

---

$p( x | θ )$
- **パラメータ $\theta$ が与えられた時のデータ $x$ の確率分布**

(パラメータ$\theta$のもとでのデータ$x$の発生確率)

**機械学習では パラメータ $\theta$ を学習させていく**

---

<!-- # 図12.1
生成モデルの一例

- データとして観測される観測変数がなんらかの確率モデルから生成されていると仮定し、その生成過程を確率分布によってモデル化するアプローチ
    - 観測変数の背景にある因子（確率変数）として隠れ変数も仮定することが多い
- 「データがどのようにできているか？」を明示的に表すことができ、モデルからデータを生成することができる -->

<!-- このスライド意味わからないかも -->

- 生成モデル
    - データの生成過程をモデル化し、新しいデータを生成する能力を持つ機械学習モデル
- 観測変数
    - モデルや実験から直接得られる、測定可能な変数
- 隠れ変数
    - データから直接観測されない変数

---

## 図12.1

真の分布 $p_{true}(x)$ をもとに近似する生成モデルである$p(x|θ)$ を学習していく。

<br>

<!-- - 生成モデルが真の分布を近似するときの$θ$を決定する。 -->
- $p(x|\theta)$を$p_{true}(x)$に近似するような$\theta$を決定してる

![wave.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536502/256bfb6e-0c06-f158-fcb8-886689c4f976.png)



<!-- 真の分布（データ分布）  -->
<!-- 右側の生成モデルをデータ分布に近似していく -->
---

## 12.2.1 隠れマルコフモデル　(HMM)
隠れ＋マルコフモデル

- マルコフ性 
    - ひとつ前の状態に応じて次の状態が決まること
- 隠れ状態 
    - 実際に観測できないデータ

---

## HMMとは
- 離散系列の観測データに対する生成モデル
    - 観測データが、実際には観測できない隠れ変数(隠れ状態)から出力されることを仮定したモデル

**確率に従った状態の遷移をモデル化したもの**

---

## HMMの使用例
- 音声認識
- 自然言語処理（品詞推定）
- バイオインフォ（塩基配列の解析, 2次構造予測）
- 株価の変動予測
<!-- 要約 -->

<!-- 観測できない離散的な内部状態列を予測
出力列からモデルのパラメータ予測 -->

---

## 図12.2 HMM

$x$ : 観測データ
$z$ : 隠れ変数
$a_{kl}$ : 状態 $k$ から状態 $l$ に遷移する確率
$e_{k}(x)$ : 状態 $k$ から観測データ $x$ が得られる確率

**隠れ状態間の遷移確率と観測状態が、特定の隠れ状態に関連付けられる確率（出力確率）が定義される。**
<!-- - 観測データから隠れ状態を推定したり、与えられた隠れ状態に基づいて観測データを生成したりすることができます。 -->
<!-- 観測される系列データ背後に存在する隠れた状態の系列をモデル化する確率的モデル -->

---

## 例12.1　クロマチン状態のHMMによるモデル化

**図12.3**
**各クロマチン修飾の観測パターンから、隠れたクロマチン状態を推定するのに使われる。**

<!-- 観測系列（観測データ） : エピゲノムデータ

隠れ状態 : エピゲノムデータの背後にあるクロマチン状態 -->

<br>

<!-- ### HMMを用いてモデル化する
→図12.3 -->

---

## 図12.3　
<!-- ほぼ図12.2と同じ -->
**観測系列（観測データ） : エピゲノムデータ**

**隠れ状態 : エピゲノムデータの背後にあるクロマチン状態**

HMMでモデル化することで、
- エピゲノム修飾パターンとその機能との関係性が明らかになる
- さまざまな生物学的知見につながる可能性を秘めている


---

## HMMを解析的にみる


$
p(x, z | \theta) = [p(z_{1}) \prod_{t=1}^{L}p(z_{t+1} | z_{t})][ \prod_{t=1}^{L}p(x_{t} | z_{t})] ・・・ (1) 
$
**観測データ系列 $x$と隠れ状態系列$z$の同時確率分布**


- $p(z_{1})$
    - 初期状態$z1$の確率
    - 隠れ状態列が始まる前の初期状態の確率

- $[\prod_{t=1}^{L}p(z_{t+1} | z_{t})]$
    - 各時点$t$での状態$z_t$から次の状態$z_{t+1}$への遷移確率の積
    - 隠れ状態が時間と共にどのように遷移しているかを表す部分

- $[ \prod_{t=1}^{L}p(x_{t} | z_{t})]$
    - 各時点$t$での隠れ状態$z_t$が与えられたときの観測データ$x_t$の確率の積
    - 特定の隠れ状態が与えられた時にどのような観測データが得られるかを表す

---

## 観測データ系列 $x$と隠れ状態系列$z$の同時確率分布

$$
p(x, z | \theta) = a_{0z_1} \prod_{t=1}^{L}[ e_{z_t}(x_t) a_{z_tz_{t+1}}]　・・・(2)
$$

- $a_{0z_1}$
    - 初期状態$z_1$への状態遷移確率
- $\prod_{t=1}^{L}[ e_{z_t}(x_t) a_{z_tz_{t+1}}]$
    - 各時点$t$における観測データ$x_t$の出力確率とその次の時点$t+1$への遷移確率の積の総乗
        - $e_{z_t}(x_t)$
            - 状態$z_t$から観測$x_{t}$が出力される確率
        - $a_{z_tz_{t+1}}$
            - 状態$z_t$から状態$z_{t+1}$へ遷移する確率


<!-- --- -->

<!-- 最もありうる状態は？↓
ビタビアルゴリズム（パラメータわかってる前提） -->

<!-- 
どういうことか


ひとつ前の状態に応じて次の状態が決まることをマルコフ性と呼ぶ

// 時系列を考慮したクラスタリング -->

---

## 12.2.2  ペア隠れマルコフモデル ( pHMM )

---

## 生物配列のペアワイズアラインメントのための特殊な隠れマルコフモデル

- ペアワイズアラインメント
    - 2本の生物配列をギャップと呼ばれる特別な文字を挿入することによって、関連のある文字の対応関係をとる（整列させる）こと
<!-- １章でやった配列同士のアラインメントをHMM使ったもの -->

---

## 図12.4
- 3種類の隠れ状態
    - 一致状態（Match、M）
    - x側の挿入状態（Insertion X, Ix）
    - y側の挿入状態（Insertion Y, Iy）

**これらの隠れ状態が、二つの配列間のアラインメントを表現する**

---

- 一致状態（Match、M）
    - 二つの配列が一致している状態（つまり、同じ文字がアラインメントの同じ位置に存在している状態）
- x側の挿入状態 Ix
    - 配列xにのみ存在する文字（つまり、配列yにはギャップがある状態）
- y側の挿入状態Iy
    - 配列yにのみ存在する文字（つまり、配列xにはギャップがある状態）


---

## 図12.4 ペア隠れマルコフモデル

遷移確率 : 隠れ状態間の矢印　$p_{M→M}$
出力確率 : 隠れ状態から観測状態への矢印　$p_{AA}$
観測状態 : 実際の配列の文字

(a)のM→Xの矢印は（c）の$p_{M→X}$ 


---

## Viterbiアルゴリズム
- pHMMに用いられてる
- 2本の生物配列の最適なアラインメントを求めることに対応してる
<!-- - 最も確率的にあり得る状態の系列（パス）を見つけるためのアルゴリズム -->

<!-- どうやって最適なアラインメントを求めるパラメータが決まるのか？ -->

---

## Baum-Welchアルゴリズム (EMアルゴリズム)
- 隠れマルコフモデル（HMM）のパラメータ$θ$ を学習するためのアルゴリズム
- 配列データから学習可


1. Eステップ（Expectationステップ）： 現在のパラメータを用いて、各状態間の遷移の期待値と各状態での観測データの期待値を計算
2. Mステップ（Maximizationステップ）： Eステップで計算した期待値を用いて、パラメータ（状態遷移確率や観測確率）を更新

**これらのステップを繰り返すことで、観測データの尤度（観測データが得られる確率）を最大化するパラメータが求められる。**

---

## 12.2.3  (profile HMM)
- 配列モチーフの確率をモデル化したもの
<!-- - 配列をアラインメントするためのHMM -->
<!-- - タンパク質配列分類やドメイン予測などに有用
    - 例 : Pfam
        - ドメインの種類ごとにHMMを作る -->


---

## 図12.5
$x$（観測データ） : 生物配列（DNA配列）
$z$（隠れ状態）: コンセンサス状態列（一致状態M, 挿入状態I, 欠失状態D）
↓
$p(x, z | \theta)$が定義される
<!-- $p({M_1|開始})$ -->



<!-- ## 配列をアラインメントするためのHMM -->

<!-- 
Profile HMMの状態間の遷移確率は、多重配列アライメントからの情報に基づいて推定されます
図12.5でいうと矢印はマルチプルアラインメントに基づいて推定された遷移確率。
このモデルでは太矢印のように遷移する。
開始状態からまずM1→I1→M2→M3→終了
このモデルではAATGというふうに遷移する


多重配列アライメントから配列モチーフをモデル化したもの。

Profile HMMは、多重配列アライメントから配列モチーフを識別し、新しい配列のモチーフの一致度を評価します。
 -->
---

## pHMMとの違い
- 各隠れ状態で出力される文字の確率分布が異なること（図12.5）
↓ <!-- 位置ごとにパラメータが異なる -->
位置依存的に一致および挿入/欠失を許容する配列モチーフを定義することができる

---

## 12.2.4 確率文脈自由文法と共分散モデル
- 確率文脈自由文法 (SCFG)
    - 遠距離の関係性を表現できる確率的なモデル
        - RNAの２次構造などを確率的に表現できる
    - 正式には、SCFGは生成規則とその確率によって定義される
<!--
 隠れマルコフモデル（Hidden Markov Model：HMM）は、ある隠れ状態の次の隠れ状態への遷移が、直前の隠れ状態だけに依存するという性質を持つモデル
 -->

---

RNAの２次構造の生成規則の例
$$S→aSu | uSa | gSc | cSg | gSu | uSg | aS | uS | gS | cS | ε ・・・(3)$$

<br>

$S→aSu$ : $a$と$u$が塩基対


---

## 図12.6　SCFGとRNA二次構造
(a) : パースツリー
(b) : 対応する２次構造

---

$p_{S→xSy}$を生成規則$S→xSy$の確率であるとするときの
SCFGのパラメータ$\theta$

```math
\theta:=\{\{p_{S→xSy}\}_{(x,y)\in\beta}, \{p_{S→xS}\}_{x\in\beta}\}
```



---

$x$がRNA配列, $z$がRNAの2次構造に対して$p(x,z|\theta)が定義される$

$$p(x,z|\theta) = p_{S→a･Su} ･ p_{S→g･Sc} ･ p_{S→a･S} ･ p_{S→c･S} ･ p_{S→c･S} ･ p_{S→ε}　・・・(4) $$

<br>

**RNAの２次構造予測は生成規則の確率の積で求められる。**

---

## 共分散モデル (Covariance Model; CM)
- 確率文脈自由文法（SCFG）の一種

<!-- 共分散モデルを用いると -->
**RNAの構造と配列情報を同時に考慮したモチーフをモデル化することが可能**
↓
**ncRNAのモチーフ探索やファミリー検索に応用されている**

---

## トピックモデル
トピックモデルは文章を単語の集合である「Bag of words(BOW)」として表現し、
観測変数である単語がトピックと呼ばれる隠れ変数から生成されることを仮定したモデル。
<!-- - 単語の集合から隠れたテーマや話題を識別するモデル。 -->
- 文章がどんなトピックから、どんな単語の割合で構成されてるかを推定するモデル
例えば「経済」トピックだと「金利」、「株価」の出現確率が高い

---

## トピックモデルはいくつか存在する
- 確率的潜在意味解析（PLSA）
- 潜在ディリクレ配分モデル（LDA）

---

## 図12.7 
$\alpha , \beta$ : ハイパーパラメータ
$\psi$ : 各文章のトピック分布
$z$ : 隠れ状態のトピック
$x$ : 観測データ（BoW）
$\phi_{k}$ : 各トピックの単語分布

---

## 図12.7 (b)
$\alpha→\psi$ : 各文章のトピック分布を生成
$\psi→z$ : 単語の潜在トピックを生成
$\beta→\phi_k$ : 各トピックの単語分布を生成

**左側で求めた単語の潜在トピック$z$と右側で求めた各トピックの単語分布$\phi_k$から bag of words (BOW)を生成する**

---

## トピックモデルのパラメータの学習方法
- PLSA
    - HMMと同様に最尤推定により推定を行う
- LDA
    - $\phiと\psi$ に事前分布を考えることによりベイズ推定の一種である変分推論やギブスサンプリングに基づく推定も可能

<!-- マルコフモデル : マルコフ過程に従う確率分布
マルコフ過程 : 任意の自国の状態の確率分布が、直前の状態のみに依存するような確率過程 (時間と共に変化する確率変数) -->

---

## トピックモデルを用いた例
- メタゲノム細菌群
    - 「文章」を「個人の腸内細菌」、「単語」を「細菌種」、「トピック」を「細菌群」としてモデル化してる
- がんの変異シグネチャー
    - 変異原とその変異のプロファイルのペアを変異シグネチャー
    - 「文章」を「ガンゲノムサンプル」、「トピック」を「変異源」、「単語」を「ゲノムに含まれる変異」に対応させることで変異シグネチャーはトピックモデルによりモデル化可能

---

## 12.3 分類 / 回帰のための教師あり学習

---

## 分類
離散値（クラス）を予測する

![分類.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536502/76f897d4-59af-c8ed-3ddf-1a5dc90b9fa6.png)

---

## 回帰
連続値（数値）を予測する
![回帰.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536502/5fe8fc68-5979-e65c-43d7-a3f2f0a9cda3.png)

---

- 教師あり学習
    - 教師データをもとに学習する機械学習手法

- 教師なし学習
    - 教師データを必要としない学習
    - 学習データに対応する正解を与えない状態で学習させる

---

## 教師データ
- 薬の活性予測の例だと教師データは薬の構造や活性のあるなし（2値）や活性の値（連続値）などのデータ


<br>

**学習プロセスを通じて機械に新しい情報を読み込ませるだけでなく、「何が正解か」ということを明確に定義づけて学習させる**


---

## 12.3.1 サポートベクターマシンとカーネル法


---

## SVM
- 教師あり学習
    - 分類および回帰分析のためのアルゴリズム

- 特徴ベクトル
    - データの特性を数値的に表現したベクトル

---

## カーネル法
- 線形に分離できないデータを線形分離可能にする方法→ **図12.8**


---

## カーネル
- データ間の類似性を計算する関数$K(x, y)$


**さまざまな構造データや生物データに特化したさまざまなカーネルが提案されてる**

---

## さまざまなカーネル
- 文字列カーネル
- グラフカーネル
- 周辺化カーネル
- 局所アラインメントカーネル

---

## 12.3.2 ランダムフォレスト
- 教師あり学習
    - 「分類」「回帰」
- 複数の決定木を用いたアンサンブル学習
<!-- 決定木、アンサンブル学習については図12.9 -->


---

## 図12.9
- (a) 決定木
    -  Yes / No などの二者択一の質問を階層的につなげたもの

- (b) ランダムフォレスト
    - 複数の決定木を独立に学習
    - それぞれの決定木の予測結果を集約し、最終的な予測をする

---

## 12.3.3 　教師あり機械学習手法を用いる際の注意点

---

## 過学習
- 教師データに適合しすぎてしまうこと
    - 新しい未知のデータに対する性能が低下する現象

---

# 汎化性能
- 未知のデータに対する性能
    - 過学習が起きると汎化性能が低下する

---

## 汎化能力を獲得することが機械学習の最終的な目標

---

## クロスバリデーション
- **過学習を防ぐ性能評価手法**
- 「学習データ」と「評価データ」の二つに分けて学習を行う
    - 図12.10

<!-- クロスバリデーションは、データを複数回に分割し、一部で学習して残りで評価を行う手法で、その平均的な性能でモデルの予測能力を推定します。 -->
---

## 深層学習
- SVM, ランダムフォレストに比べて精度の高い人工知能
- 教師あり学習
    - 「回帰」、「分類」
- 自然言語処理、画像処理の分野だけでなくバイオの分野でも使われてる

<!--
 自然言語処理（Natural Language Processing, NLP）は、コンピュータが人間の言語を理解し、生成するための技術領域です
  -->
---

## 深層学習
- 多層ニューラルネットワーク
- 中間層を多層化することで**データの背後にあるルールやパターン**を予測する　
![dplearning.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536502/0cb51485-33fa-478a-e169-cb5e973560c1.png)


---

## 深層学習が成功している要因
- オートエンコーダによる事前学習
    - 局所解の影響を回避
- ドロップアウト（dropout）
    - 過学習の防止
- GPUの使用
    - 計算機能力の向上

<!-- 
オートエンコーダ：データの次元圧縮とかに使われる
 -->

---

## 12.4.1 マルチモーダル深層学習
データの種類ごとに多層ニューラルネットワークによりモデル化を行う
↓
それぞれのネットワークを上位の層で結合する
（図12.11）

---

## 12.4.2 畳込みニューラルネットワーク (CNN)
- 畳込みとプーリングを複数行うことで特徴量を学習する
<!-- 
プーリング：複数のセルの特徴をまとめたもの
ロバスト：堅牢な、頑強な、強靭な
 -->

---

## 畳み込み
フィルタを用いて、局所的な特徴を強調する操作
![tatamikomi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536502/a5f4ae9a-89a7-0fae-a204-e8cbab376f89.png)



---

## プーリング
- 複数のセルの値をまとめた特徴を作る

![pooling.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536502/593bd493-91b1-137e-d87d-f4b3b1b90340.gif)


---

## 12.4.3 時系列データに対する深層学習

---

## 再帰型ニューラルネットワーク （RNN）
- 系列データに対して適用可能な深層学習手法
    - 時系列データ、シーケンスデータ
- ある時刻$t$の出力が次の時刻$t+1$の入力となるようなモデル
- 長い時系列データではうまく学習できない
    - →LSTM
        - 長期の依存関係を捉えることができる


---

## 12.4.4 生物学への応用例
- 核酸の配列情報のみから転写因子やRNA結合タンパク質との結合能を予測するモデル
- ゲノムの配列情報のみからヒストン修飾などのエピゲノム情報を予測するモデル
↓ 図12.13
配列をバイナリコードで表現してCNNを使って
エピゲノム予測、RBP結合能予測、転写因子結合予測とかができる

このバイナリコード表現をone-hotとか言う


---

## 12.5 モデル学習
- 確率的生成モデルのモデル構造をデータから学習するための方法全般
→データから特定の目的（予測、分類、クラスタリングなど）に適したモデルのパラメータを推定・調整するプロセス

<br>

データ駆動型ではモデル学習が重要
↓
生物データの背後に存在する新たな「生物学的構造」の発見に繋がるから


---

- クロマチン状態推定におけるモデル選択
    - クロマチン状態の種類を事前に決めることは難しい
    - モデル学習を利用することで、データのみからクロマチン状態の数を推定できる 
- ペアHMMにおけるモデル選択
    - ペアHMMには3つの隠れ状態があった
    - モデル学習を行うことで、隠れ状態の数と特徴が明らかになり、状態がゲノム中にどのように分布しているのかが解析できる
- 変異シグネチャーのモデル選択
    - 変異原の種類と変異の特徴を明らかにすることにより新しいがん化のメカニズムにつながる