AIを使えば、RNA-Seq解析のコードは短時間で作成できます。 解析方法を質問すれば、サンプルコードが返ってきます。 エラーが出れば修正してくれます。 この便利さは、これからますます大きくなっていくでしょう。
しかし、その一方で、私たちは新しい問題にも直面しています。 サンプルコードが、いつの間にか「標準」として固定化されてしまうことです。
サンプルコードは、標準を書くために作られたわけではない
ソフトウェアのマニュアルやチュートリアルには、 多くのサンプルコードが掲載されています。 しかし、それらは必ずしも、 「どのようなデータにも最適な方法」 として書かれたものではありません。 多くの場合は、下記を目安に、 「分かりやすい例」 として書かれ、選ばれたものです。
- 短く書ける
- 理解しやすい
- 動作が安定している
- 説明しやすい
サンプルコードはコピーされ続ける
問題は、その後です。 サンプルコードは、
- ブログで引用される
- GitHubでコピーされる
- 大学の講義で配布される
- 社内マニュアルへ貼り付けられる
そして現在では、 AIがサンプルコードの拡散と再利用をさらに加速させています。
マニュアルにあるサンプルコードも、変更することが前提である
例えば、RNA-Seq解析では、 低Count遺伝子を除外するために、 次のようなサンプルコードが紹介されることがあります。
keep <- rowSums(counts(dds) >= 10) >= smallest_group_size
dds <- dds[keep,]
このコードは、 「Countsが10以上のサンプルが、 最も少ない実験群のサンプル数以上存在する遺伝子だけを残す」 という処理を意味しています。 短く、分かりやすく、 チュートリアルで説明するにも適したコードです。
しかし、当然ですが、これは どのようなデータにも適用すべき標準手順ではありません。 実際、このようなサンプルコードは、 データに応じて変更することが前提になっています。 例えば、よくある臨床データで考えてみましょう。 健常者から生検サンプルを得るのが難しい場合、 健常者が3例、患者が60例というように、 群間でサンプル数が大きく異なることがあります。 このようなデータに、 このサンプルコードをそのまま適用するのが適切ではないことは、 多くの人が感じるのではないでしょうか。
しかし実際には、
この一行は100行近いスクリプトの一部としてコピーされます。
利用者は、
コードが動いたことを確認しても、
一行一行について、
「なぜこの条件なのか」
「自分のデータにも適しているのか」
まで検討せずに使うことが多いのではないでしょうか。
その結果、
サンプルコードが、そのまま標準手順としてコピーされ続けます。
サンプルコードを書くことは、以前より難しくなった
AI時代には、 一つのサンプルコードが世界中で何万回もコピーされ、 AIによって繰り返し使われることで、 標準として固定化される傾向がさらに強まります。 一度公開されたサンプルコードが文脈を離れて独り歩きし、 AIによって繰り返し再利用される可能性がある以上、 できるだけ誤用されにくく、 安全な形で示すことは、 これまで以上に重要になるでしょう。
しかし、どれほど注意して作成しても、 サンプルコードだけであらゆるデータや研究目的に対応することには限界があります。 やはり、サンプルコードはサンプルでしかなく、 実際に使うときには、 解析者が適切に変更しなければならないというのが筋なのは間違いありません。 ただ、それをAIが自動的かつ確実に行ってくれるとは 期待できないということです。
一つの考え方だけが正しいわけではない
ここでいったん話を変えます。
例えば、
「RNA-Seqデータ解析にt検定は使うべきでない?」
とAIに聞いてみてください。
AIは即座に、その通りだと返答するでしょう。
しかし、
AIが指摘するポイントに一つ一つ論理的に反論していくと、
別の答えにたどり着くでしょう。
これについての詳細は、
「RNA-Seq発現差解析におけるedgeR・DESeq2・t検定の使い分け|原理とデータタイプ別の実践ルール」
をご覧ください。
AIの回答に見られる一つの傾向は、 ウェブ上で最も多く共有されている一般論を強く提示することです。 そして、それを 唯一の正解 のように扱いがちです。 さらに、その一般論から外れる主張を、 「間違っている」 「統計学的にあやしい」 などの強い言葉で否定することがよくあります。 人間からそのようなことを言われたら、 言われた側は萎縮し、 自分が間違っていると思って意見を引っ込めてしまうかもしれません。
しかし、AIは人間ではありません。 むしろ、そういう性質を持った何かだと思って接する必要があります。 AIが挙げた論点に一つ一つ論理的に反論していけば、 驚くほどあっさりと立場を変えます。 こちらの反論が筋の通ったものであれば、 AIが一般論にこだわり続けることはありません。 ただし、それでも対話の途中で急に一般論に引きずられることがあるため、 その都度、軌道修正が必要です。
このような性質を持つAIが作るスクリプトとは
AIによる解析の自動化は、 これからますます進むでしょう。 そのメリットは積極的に利用すべきです。
しかし、 AIが生成する解析スクリプトも、 何もないところから新しい解析方法を考え出しているわけではありません。 多くの場合、 ウェブ上で広く共有されている一般論と、 マニュアル、チュートリアル、ブログ、GitHubなどに掲載された サンプルコードを組み合わせて作られます。 それぞれの処理は妥当であっても、 それらを組み合わせた解析全体が、 一貫して整合性を保っているとは限りません。
これは、ある解析ツールの世界と、 別の解析ツールの世界を考えると分かりやすいでしょう。 それぞれの世界では、 そのツールをどのように使うべきかについて活発な議論が行われ、 一般的な解析手順やサンプルコードが蓄積されています。 AIは、それぞれの処理について質問されれば、 その世界で広く共有されている一般論に沿ったコードを作ることができます。 しかし、 異なる解析ツールや処理の間を、 どのような考え方でつなぐべきかという情報は、 ウェブ上に圧倒的に少ないのが実情です。 そのためAIは、 それぞれの処理については一般的で妥当なコードを選びながら、 それらを寄せ集めて解析全体を構成することになります。 個々の処理に問題がなくても、 解析全体を通して、 同じ研究目的や一貫した考え方が維持されているとは限りません。
だからこそ、
AI時代には、
解析全体を通して結果同士のつながりを確認する
Analysis-wide Consistency
という視点が重要になります。
この問題については、
「ヒートマップで可視化された値。DEG解析に使われた値。二つが同じではないかもしれないと知っていますか? ― Analysis-wide Consistencyという評価軸の提案」
で詳しく説明しています。
特に、一般論から外れるときは注意が必要
研究目的によっては、 一般的な解析手順から意図的に外れることが必要な場合もあります。 例えば、 広く使われている方法では捉えにくい発現パターンについて、 「このような変化を示す遺伝子が存在するのではないか」 と想像しながら探索する場合です。 そのような研究者固有のアイデアが、 ウェブ上の一般論として多数を占めているはずはありません。 そのような解析をAIに依頼すると、 ウェブ上で広く共有されている一般的な処理が、 生成されたスクリプトの一部として、 気づかないうちに紛れ込む可能性があります。
だからこそ、
一般論から外れる解析を行うときには、
生成されたスクリプトが研究目的を最後まで一貫して反映しているかを、
解析者自身が注意深く精査する必要があります。
とはいえ、
これは決して簡単なことではありません。
AIとSubio Platformの役割分担
ここまで見てきたように、 AIが作る解析スクリプトには、 異なる解析ツールや処理を一つの流れとしてつなぐ部分に、 弱みがある可能性があります。 それぞれの処理については一般的で妥当なコードを作れても、 解析全体を通して、 同じ研究目的や一貫した考え方を維持できるとは限りません。
そこで考えられるのが、 Subio Platformが解析全体のまとめ役を担い、 個別の解析作業だけをAIにスクリプト化させ、RやPythonで実行する という役割分担です。 まずSubio Platform上でデータを整理し、 全体の流れと各ステップの関係を管理します。 そのうえで、 発現差解析、deconvolution解析、機械学習など、 必要な処理ごとにデータを出力し、 AIにRやPythonのスクリプトを作成させます。 そして、得られた結果を再びSubio Platformへ戻し、 元のデータや他の解析結果との関係を確認します。
この構成であれば、
AIに大規模な解析パイプライン全体を一度に作らせる必要はありません。
AIが担当する処理を小さな単位に限定しながら、
解析全体のつながりはSubio Platform上で維持できます。
異なる解析ツールの間をAIに全面的につながせるのではなく、
Subio Platformを共通の土台として、
必要な解析だけをAIの支援を受けながらRやPythonで実行する
という考え方です。
このようなSubio PlatformとRやPythonの連携については、
「RNA-Seqデータ解析の新しいスタイル|R/Pythonで解析 × Subioで可視化・データ管理」
で具体的に説明しています。
AIは、文法エラーや引数の不一致など、 コードの実行を止める局所的な問題を見つけ、 修正することには優れています。 しかし、各処理が研究目的に対してどのような意味を持ち、 前後の処理や他の解析結果とどのようにつながるのかを、 解析全体を通して一貫して判断することは得意ではありません。 AIが実行可能なスクリプトを作れることと、 そのスクリプトが研究目的に沿った一貫した解析になっていることは、 同じではありません。
したがって、AIが生成したスクリプトに、 研究の中核となる解析を任せるのであれば、 本来はコードを一つ一つ点検し、 研究目的に合わない処理が含まれていないかを確認する必要があります。 その膨大な作業に比べれば、 前述のように解析を小さな単位に分け、 元のデータと解析結果をSubio Platform上で可視化しながら、 結果が想定どおりかを確認して進める方が、 はるかに速く、確実な場合もあるでしょう。
一方で、大量のデータを継続的に処理する場合には、 考え方が少し異なります。 十分に検証されたプログラムで自動処理を行い、 人間による確認が必要と考えられるデータだけに アラートを出す仕組みも考えられます。 その場合、Subio Platformは、 アラートが出たデータを詳しく確認するために利用できます。 自動処理の結果を人間の目で確認する工程は、 一見すると必要ないと思うかもしれません。 しかし、現実のデータが常に想定どおりとは限らない以上、 自動解析とSubio Platformの組み合わせは、 むしろ全体として効率的で現実的な運用方法になりえます。
RNA-Seqデータ解析は、今後、AIと自動化プログラムによって 大きく変わっていくと予想されます。 しかし、自動化が進むほど、 解析の妥当性と、解析全体を通した一貫性(Analysis-wide Consistency)を 人間が確認できる環境の重要性は高まります。 Subio Platformは、 自動解析のすべてを置き換えるのではなく、 必要な場面で元のデータと解析結果を可視化し、 その関係を検証するための環境として、 これまで以上に重要な役割を果たすでしょう。