統計・機械学習の数理 Advent Calendar 2023 15日目の記事です。
動機
私のお気に入りYoutubeチャンネル「3Blue1Brown」に憧れて作りました。
3Blue1Brownとは数学系の知識を可視化して分かりやすく動画で説明してくれているチャネルです。
3Blue1Brownの動画は、Manimという数学系可視化ライブラリを使って作られているそうで
私にも作れるんじゃないか、アドベントカレンダーのネタになるんじゃないか?
という気軽な気持ちで始めたのですが、、、、結構大変でした。
私の下手くそな動画よりも、本家を見てほしい。
上手に作ればこんな美しい動画が作れます。
【面白い数学】衝突回数に円周率が現れる理由
最小二乗法を動画で説明してみる
解説
インストール
Visual Studio CodeとPythonがまず必須です。
あとFFMPEGという、老舗エンコードソフトのインストールが必須です。
https://ffmpeg.org/
きれいな数式を表示したい場合、Texという文法で書きますが
こちらも事前にMikTeXというソフトのインストールがいります。
https://miktex.org/download
Pythonがインストール後にpip(Pythonのパッケージ管理ソフト)を使って
Manimをインストールします。
pip install manim
今回私がやっていたように、音声を足したい場合は、
manim-voiceoverプラグインのインストールをします。
pip install "manim-voiceover"
書き方
本動画のコードを元に説明すると非常に分かりにくくなりそうなので、、、
(要望あればアップします。)
公式のQuickStartを見てもらうのが最も簡単です。
https://docs.manim.community/en/stable/tutorials/quickstart.html
- 適当にフォルダを作る。例えばproject
- シナリオを定義したpythonクラスを作成する
例えばScene.pyというファイルを作って、その中にクラスを作ります。
from manim import *
class CreateCircle(Scene):
def construct(self):
circle = Circle() # 円を生成
circle.set_fill(PINK, opacity=0.5) # 色と
self.play(Create(circle)) # 動かす
- コマンドラインで
manim -pql scene.py CreateCircle
を実行
動画が作成され、メディアプレイヤーで再生されます。
高解像度にしたければ、-pqlを-pqhにするとよいです。
Example Galleryが充実しています。
面白そうなコードをコピペして動画作成してみるのが、理解への近道です。
https://docs.manim.community/en/stable/examples.html
苦労したこと
レイアウト
つい、PowerPointの間隔で1ページにいろんな情報を盛り込もうとすると
レイアウトが難しくなります。はみ出たり、重なったりしてよく分からなくなります。
1つのシーンはなるべくシンプルに構成したほうがよいですね。
そもそも、わかりやすい可視化方法を思いつくのが難しい
道具は良くても使うのは人なわけで、どう可視化したら良いかがミソです。
今回、最小二乗法を思いついた時点で
データポイントと直線の偏差と、傾き、切片を変えたときの偏差平方和を
連動してグラフ化しようというところまで考えていました。
が、実際描き始めると傾きが変わると切片グラフの偏差平方和も変わるので
なんだかわかりにくい、ということに気づきました。(今更、、、)
a,bの寄与分を分けて数値化するとよいかも、と思ったのですが説明がややこしくなるし
3Dにしてしまえ、と思ったのですが3Dと2Dの混在は座標系が非常に面倒でやめました。
数学的な深い理解は必要として、物事を別の視点から見ることができる視野の広さが
要るのではないかな、と思います。
結論
実は初めてYoutubeに動画を公開しました。
作ってみて世のユーチューバーはすごいと実感しました。
飛び抜けたアイディアと、視野の広さ、伝える技術と、最後までやりきる、それを継続する、、見習いたいと思います。