
拓海先生、最近若手からCTLという話が出てきてましてね。正直、聞き慣れない言葉でして、これを事業にどう使うのかイメージが掴めません。簡単に教えていただけますか。

素晴らしい着眼点ですね!まずCTLはComputation Tree Logic(CTL、計算木論理)と呼ぶ時系列や分岐する振る舞いを表す論理です。要点は3つです。1) システムの振る舞いを論理式で説明できる点、2) 異なるモデルを比較して違いを言語化できる点、3) この論文はその説明(論理式)を自動で『見つける』ためにSAT(Boolean Satisfiability)を使っている点です。大丈夫、一緒に見ていけばできますよ。

要するに、システムの動きを人間が読める言葉にしてくれる、ということでしょうか。で、それをどうやって『自動で見つける』んですか。

素晴らしい質問です!この論文では、識別したい条件の「型」を固定して、その型を満たすかどうかを論理式として扱えるようにSATに変換します。要点は3つです。1) 論理式の構造を固定してSAT問題に落とし込む、2) SATソルバーでその可否を判定する、3) インクリメンタル(段階的)に式の大きさを増やしていき、最小の式を目指す、という手順です。ですから実務ではまず小さく始められるんですよ。

なるほど。現場では『正常なモデル』と『不具合のあるモデル』があるとして、その違いを説明してくれる機能が本丸という理解で合っていますか。

その理解で合っていますよ。素晴らしい着眼点ですね!現場の振る舞いを表すKripke structure(KS、クリプキ構造)というモデルを用意し、正例・負例を与えると区別するCTL式を探します。要点は3つです。1) 入力は正例と負例のKS、2) 出力はそれらを区別するCTL式、3) 式は最小化を目指すので過度に複雑にならず実務で解釈可能です。

これって要するに、CTLをSATで見つけるってことですか?技術的には難しそうですが、投資に見合う成果は期待できますか。

素晴らしい着眼点ですね!はい、要するにそのとおりです。投資対効果はケースによりますが、要点は3つです。1) 仕様理解や故障解析の工数削減に貢献する、2) 自動生成される説明はレビューや監査の証跡になる、3) 初期は中小規模のモデルで検証してから段階的に導入するのが現実的です。大丈夫、段階的に投資を抑えながら効果を測れますよ。

運用にあたって現場のエンジニアが使えるか心配なのですが、扱いは難しくないですか。特にデータの用意やツールの扱いでつまずきそうでして。

素晴らしい着眼点ですね!導入の現実性に関し、要点は3つです。1) 入力となるKripke構造は振る舞いログから自動生成可能で、最初は監督付きでデータ整備を行えば現場運用に繋がる、2) SATソルバー自体は既製品を利用でき、UI整備が肝心である、3) 解釈可能性を優先するため式のサイズ制約を設けて運用するのが効果的です。安心してください、一緒に現場化まで伴走できますよ。

論文は最小化も謳っているようですが、最小の式が本当に一番使えるものなんでしょうか。現場での可読性と数学的最小性は必ずしも一致しない気がして。

素晴らしい着眼点ですね!その通りで、最小性は一つの合理的な基準に過ぎません。要点は3つです。1) 最小式は冗長を省き真の差分を示す利点がある、2) しかし可読性やドメイン知識に基づく解釈容易性とトレードオフになる場合がある、3) 実務では最小性を起点に人手でチューニングするワークフローが現実的です。ですから完全自動で終わりではなく、人とツールの協業が鍵になりますよ。

最後に私の理解を確かめたいです。これって要するに、正例と負例を渡すと『何が異なるのか』を判別可能な論理式を自動生成してくれて、その際にSATソルバーで探索し、式の大きさを段階的に増やしていって最小の説明を探す、ということで合っていますか。

素晴らしい着眼点ですね!その理解でぴったり合っていますよ。要点は3つです。1) 入力は区別したい正例と負例のKS、2) 方法はCTL式をSATにエンコードしてソルバーで探索する、3) インクリメンタルにサイズを上げていき最小の式を得る。大丈夫、田中専務の把握は的確です。

わかりました。自分の言葉で言うと、まず小さく試して、異常と正常の違いを人が読める形で出してくれるツールを作る、と。投資は段階的にして現場で解釈しやすいように整えていく、ということですね。


