makenowjust-labs/blog

MakeNowJust Laboratory Tech Blog

@makenowjust の技術ブログです。

オートマトン理論などの情報科学的なことや、JavaScript (フロントエンド) や Scala などのプログラミングの技術について書きます。

記事の正確さについては保証しません。間違っていたらごめんなさい。

リポジトリ: https://github.com/makenowjust-labs/blog

記事

nominalアプローチの "nominal" の訳語について考える

2026-01-15 (更新: 2026-01-25) / 読むのにかかる時間: 約32.9

計算機科学の分野において nominal set や nominal logic に現れる "nominal" は「名前の具体的な値を切り捨て、置換有限supportによって構造を記述する方法」を表します。 nominalアプローチを用いると、例えばα変換を群論の言葉 (群作用など) を使って非常に見通しよく定義できます。

この意味で使われる "nominal" には今のところ定まった訳はありませんが、J-GLOBALでは『名目』および『公称』として訳されているようです (ソース1ソース2)。 しかし、これらの訳はいくつかの理由 (「名前に関する」という意味が弱い、など) から、nominalの訳語としてはベストなものとは言い難いと考えられます。

そこで、本記事では「置換と有限supportによる構造を記述する方法」の "nominal" の訳語として、統計学の名義尺度 (nominal scale) を参考にした『名義』という訳を提案したいと思います。

Λ*とMAT*によるSymbolic Finite Automataの学習

2025-02-20 (更新: 2025-02-23) / 読むのにかかる時間: 約49.7

有限状態オートマトンの一種にSymbolic Finite Automata (SFA)と呼ばれるものがあります。 これは遷移が文字ではなく条件式でラベル付けされるオートマトンで、現実世界でSFAを使うことで効率的に表現できる例があることから、研究が進められています。

SFAに対するオートマトン学習アルゴリズムとして、Λ\Lambda*MAT\mathrm{MAT}*が知られています。 どちらも既存のオートマトン学習のアルゴリズムをベースとしてSFAに拡張したものですが、学習に用いるデータ構造の特徴を上手く利用した興味深いものになっています。

この記事ではまずSFAの定義を確認し、そのあとにΛ\Lambda*MAT\mathrm{MAT}*について解説します。

想定読者: オートマトン学習について知識・関心がある方。

lstar-vizでL*の動作を可視化してみる

2025-01-03 / 読むのにかかる時間: 約6.5

AngluinのLL^\astは、オートマトン学習の代表的なアルゴリズムです。 本ブログでも度々紹介してきました。

今回、このLL^\astの動作を可視化するツールlstar-vizを実装しました。 この記事では、ツールの使い方や、ツールを作るにあたって用いた技術について紹介します。

想定読者: LL^\astアルゴリズムやフロントエンドの技術に興味がある方

最新のオートマトン学習アルゴリズムL#について

2024-08-17 (更新: 2024-08-21) / 読むのにかかる時間: 約60.8

L#L^\# というオートマトン学習のアルゴリズムがあります。

2022年にVaandragerらによって提案された、最新のオートマトン学習のアルゴリズムです。 apartness relationという概念を用いて、よく知られているAngluinの LL^\ast とは少し違ったアイディアでオートマトンの学習を実現します。 学習に用いるデータ構造として、従来のobservation tableやdiscrimination treeではなく、observation treeというmembership query (output query) のキャッシュのようなものを利用するのも特徴です。

この記事では L#L^\# の詳細や実装について、論文 [Vaandrager et al., 2022] を参考に解説します。

想定読者: オートマトン理論やオートマトン学習について理解・関心がある。

L*やその派生アルゴリズムたち (Rivest-Schapire、Kearns-Vazirani)

2024-07-22 (更新: 2024-08-19) / 読むのにかかる時間: 約57.0

Angluinの LL^\ast はオートマトン学習 (automata learning) のアルゴリズムとして最も有名なものです。 以前、このブログでもAngluinの LL^\ast について説明しました。

LL^\ast は歴史のあるアルゴリズムのため、派生アルゴリズムがいくつか存在します。 この記事ではAngluinの LL^\ast について簡単に説明した上で、派生アルゴリズムとしてRivest-SchapireKearns-Vaziraniを紹介します。

  • Rivest-SchapireLL^\ast の反例 (counterexample) の解析手法の提案で、二分探索を用いて反例の中のobservation tableに追加すべき接頭辞を探すことで、計算量を改善します。
  • Kearns-Vaziraniはobservation tableを置き換えるデータ構造としてdiscrimination treeというデータ構造を提案するものです。

これらの手法により LL^\ast の様々な効率が改善できます。

想定読者: オートマトン理論やオートマトン学習について理解・関心がある。