#この記事の要約
- 論文で提案に関する内容を書く時は,「提案手法(Proposed method)」と「実装(Implementation)」に別れる(章・節で分けるかはケースバイケース)
- 提案手法には一般的なことを書く(変数だけ使って説明するイメージ,語尾は現在形)
- 実装には実際にどの様にそれを実現したかを書く(変数に具体的な値を入れるイメージ,語尾は過去形(になっても違和感ない))
- 論文では必ずしも提案が重要なわけではない.等身大に調査,検討したことをまとめることも十分価値がある
この記事執筆のモチベーション
だいぶ前ですが論文の書き方という記事を書きました.そこには提案手法の書き方を書いてませんでした.なので今回はその分を書いていきます.そしてなぜ前回提案に関する内容を書かなかったかというと,私もそこを書く自信がなかったためです.なんとなく少し自信を持って書ける様になった気がしたので,書く決意に至りました.
「提案手法」には普遍的な一般的内容,「実装」には具現化のための具体的内容を書く
「提案手法」には,理論的な側面や,どうしてその考えが出てくるのか,というできる限り普遍的なことを書きます.なので,基本的には変数だけを使って説明していくイメージになります.そして「実装」では,これを具体的にどの様に実装するか,ということを書きます.つまり提案手法で述べられた変数に,具体的な数値を入れそれを具現化する方法を説明していきます.これだけ聞いてもよく分かりづらいと思うので,私の専門である自己位置推定を例として,簡単に説明します.提案の新規性とかは関係ありませんので,書き方を参考にしてください.
良い例
提案手法
確率的に移動ロボットの現時刻$t$の自己位置$x_{t}$を推定する方法を提案する.自己位置$x_{t}$を求めるに辺り,時刻1から$t$までの制御入力とセンサ観測の時系列データ$u_{1:t}$と$z_{1:t}$,および地図$m$が利用できるものとする.つまり,以下のような条件付き確率を求める問題として定式化する.
p(x_{t} | u_{1:t}, z_{1:t}, m)
これは,ベイズの定理や全確率の定理を用いて,以下のように展開することができる.
\eta p(z_{t} | x_{t}, m) \int p(x_{t} | x_{t-1}, u_{t}) p(x_{t-1} | u_{1:t-1}, z_{1:t-1}, m) dx_{t-1}
ここで$\eta$は正規化径数である.
$p(z_{t} | x_{t}, m)$は,位置$x_{t}$と地図$m$が与えられた下で,センサ観測値$z_{t}$が得られる確率を考えるモデルである.そのため「観測モデル」と呼ぶ.また$p(x_{t} | x_{t-1}, u_{t})$は,1時刻前の自己位置$x_{t-1}$に対して,制御入力$u_{t}$を与えた際に,現時刻の位置$x_{t}$に対する確率を考えるモデルとなっている.そのため「動作モデル」と呼ぶ.提案する確率的自己位置推定法では,観測モデルと動作モデルが中心的な役割を果たす.以下では,その具体的な実装方法について説明する.
実装
観測モデルは...(ここからはじめてどの様に観測モデルを具体的に設計するか,またそこに含まれるパラメータをどの様に決定するか解説します).
動作モデルは,(こちらも同様に解説します).
なぜこれが良いのか
まず最初に「移動ロボットのための確率的自己位置推定法を提案する」と言っています.これに対して、使用できる情報(制御入力,センサ観測,地図)を仮定しています.これはとても一般的な話です.そして,それが条件付き確率で表記されるとしています.これも一般的です.そしてこの条件付き確率に「ベイズの定理」および「全確率の定理」を適用することで,式変形を行うことができると説明しています.これは数式展開の一般論です.
そして数式を展開した後に,「観測モデル」と「動作モデル」と説明しています.実は観測モデルや動作モデルには複数の実装方法があるのです.つまり,式展開までは一意に定まる一般論に基づいて議論が行われましたが,それ以降は,様々な実現方法のある議論に変わっていくのです.
この様に記述すると,後から読んだときに,提案の一般性を確保することができます.例えば,最初に実装した観測モデルのできが悪く,後に誰かが新しい観測モデルを提案し,性能を一気に向上させたとしても,「そもそも確率的自己位置推定法を提案したのは私だ」というように,大きな一般的な部分のオリジナルを主張できるのです.
この様な考えは特許にも似ているところがあるといえます.つまり,可能な限り一般的な話に執着し,「提案手法」の内容を書き進めなければなりません.そしてその具体的な実現方法として,「実装」の内容が説明されなければなりません.
悪い例
提案手法と実装が一緒になったもの
(上の例を参考にしながら少し変化を加えて)確率的に移動ロボットの現時刻$t$の自己位置$x_{t}$を推定する方法を提案する.(略)これは,ベイズの定理や全確率の定理を用いて,以下のように展開することができる.
\eta p(z_{t} | x_{t}, m) \int p(x_{t} | x_{t-1}, u_{t}) p(x_{t-1} | u_{1:t-1}, z_{1:t-1}, m) dx_{t-1}
この式は,カルマンフィルタを用いることで推定できる.カルマンフィルタでは...(以下カルマンフィルタを用いた自己位置推定の話)
なぜ悪いのか
式展開された結果は,カルマンフィルタ以外の方法(例えばパーティクルフィルタ)でも求めることができます.にも関わらず,「カルマンフィルタで推定できる」と言ってしまっています.なので,「上式をカルマンフィルタで推定することが提案」ということになることを意味します.これでは一般性が落ちてしまいます.本来であれば,「この式は様々な方法により推定可能である.本論文では,これをカルマンフィルタにより推定する実装方法を述べる」としておくべきです.もしそうでなければ,「パーティクルフィルタで推定します」という新たな研究に対して,新規性を主張することが難しくなってしまいます.同じ数式を違う方法で解いているだけなのに,「私のほうが先にパーティクルフィルタを適用したから偉い」と言われれるのは悲しいです.
この様なことがあるので,一般性を保てる所までを提案とし,その具体的な実現方法を実装として記述することが重要になります.
真のこの記事の執筆のモチベーション
10年ぐらい論文を書いてやっとわかった
私が初めて論文を書いたのは2011年11月頃で,国内学会発表の論文を書きました.当時何も分からなかった私に指導教員は「提案には一般的,実装には具体的な内容を書け」と言いました.当時の私は,それを私なりの考え書きました.しかし何度書いても指導教員から「違う」と言われました.ちなみに私は「ロボットは動いてなんぼ」というスタンスで研究してました.つまり,理論云々より,ロボットを動かす方法ばかり考えていたのです(これが困難を生み出す要因だったのです).
ロボットを動かす研究を進めそのまま博士を取った辺りで,なんとなく「もっと理論的な研究をしよう」と舵を切る事にしました.そうして理論を深めていくうちに,ついに理論的な部分を提案できる論文を書ける様になりました.つまり,数式展開やなぜそう考えるのかと言った理論的なものを提案する論文です.その時(2017年ぐらい)にはじめて,指導教員の言っていた言葉を少し理解できました.そして理論的な研究をさらに数年続け,指導教員の言っていた意味がやっと理解できて気でいます(今は2021年3月).なのでこの記事を書きました.
しつこいですが,「提案は一般的」,「実装は実現例」です.しかしこの考え,世間にはあまり浸透していない様に見えます.私はセンサとして,よくレーザセンサを用います.なので自己位置推定の理論的な部分を提案しても,それを確認するためにレーザセンサを用いた実装を行います.そして発表をすると,「この方法はカメラでも使えますか」と良く聞かれます.私が提案しているのは,「外界センサを使って行う新しい自己位置推定理論」であり,「レーザセンサを用いた新しい自己位置推定法」ではありません.なので,当然カメラにも適用できます(センサの特性上実現可能かどうかはあるかもしれませんが).つまり世間的には「アプリケーション的な観点で研究成果を見ている」人の方が多いといえます(そう指摘する私もその立ち位置の人間なのだと日々痛感しますが).研究発表を見る側としても,「提案している普遍的なものが何か」というものを考える様になると,より深く研究発表を聞くことができると思います.
はびこるアプリケーション研究の「提案手法」
最近私が学会に行って思うことは「アプリケーション研究が多すぎる」というものです.つまり,「何かフレームワークを使って実装してみました」という研究が多すぎるのです.言い換えれば,「実装してみました」という発表です.もちろん,これ自体は問題ではありません.問題は,これらの研究の多くが「提案法」という言葉を用いていることです.この記事を読んで頂いた後ならわかると思いますが,「実装は提案の具現化手法」であり,実装自体が提案となることはないのです.「どうしてこの様に実装すると良くなるのか?」という問いに対して,普遍的な答えを出せた時,それがはじめて提案となるのです.しかし,なんとか論文の体裁を保ちたく,安易に「提案法」と呼称しているものが多い様に思います.
論文では,必ずしも提案法が重要なわけではありません.これまでに提案されてきた方法を適用し,どの様な結果が得られるか,という「調査」を行うことも重要な研究です.そして調査をした結果,良い結果が出ても出なくても,新しい知見があればそれで十分なのです.そこに新しい知見があれば,きっと誰かに話したくなるはずです.それを等身大に発表してくれると,聞いている方も面白いのです.
私も学生のときは,「ロボットは動いてなんぼ」という研究をしていました.つまり,どっぷりとアプリケーション研究をしていました.その中で「提案法は何か」という話をしていたので,指導教員の言葉が理解できなかったのだと思います.幸いなことにここ最近,理論寄りの研究をして,指導教員の言っていたことの正しさ,そしてその重要さが理解できたつもりでいます.そして何より,この考えにたどり着いたからこそ,より大きな視点で研究発表を見れるようになったのではないか,と自負したりもしています.
まとめ
論文における「提案」の書き方を自分の経験を基に書いてみました.提案は「提案手法」と「実装」の2つに別れること,そして「提案手法は一般的」,「実装は具体的」というものです.さらに付け加えて言うなら,無理に提案法という言葉を使わない方が良いということです.単に実装だけした研究であるならば,素直に,どういう方法が有効か調べた調査研究だとか,なぜその実装が良くなるか考えた検討研究と呼称すると,発表者自身も気持ちが楽になるのかな?と思います.私は,これを理解するのに10年ぐらいかかりましたので,この記事の内容が論文を書くにあたり困っている方の助けとなる幸いです.