<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>道具：GenJAXによる確率的プログラミング :: 確率と確率的計算のチュートリアル（機械翻訳）</title><link>https://josephausterweil.github.io/probintro/ja/genjax/index.html</link><description>**ノートPCに日々を想像させる。**ゴールデンウィーク、JamalがChibanyにノートPC を貸してくれました——そしてPart Iの数え上げが超能力を手に入れます。 基礎では、確率の問いが本質的に三つの問いであることを学びま した：何が起こりうるか？何に興味があるか？数えよう！ GenJAXは、この三つ すべてをコンピュータにやらせる確率的プログラミング言語です：可能な日々を生成 するコードを書き、興味のあるものをフィルタし、シミュレーションに数え上げを 任せます。
プログラミング未経験者のために設計されています。Google Colab （インストール不要、ブラウザで動作）を使い、必要最小限のPythonだけを教え、 すべてのコード行をすでに知っている集合の概念に結びつけます。
なぜStanやPyMCではなくGenJAXなのか？正直な答え。
章一覧 Google Colabを使い始める オプション：ローカルインストール GenJAXのためのPython基礎 はじめてのGenJAXモデル トレースを理解する 条件付けと推論 行動する推論 自分でモデルを作る 本プロジェクトは日本確率計算コンソーシアム協会（JPCCA）の助成を受けています。</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Thu, 02 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://josephausterweil.github.io/probintro/ja/genjax/index.xml" rel="self" type="application/rss+xml"/><item><title>Google Colabを使い始める</title><link>https://josephausterweil.github.io/probintro/ja/genjax/getting-started/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/getting-started/index.html</guid><description>Google Colabとは？ Google Colab（「Colaboratory」の略）は、Webブラウザ上でPythonコードを書いて実行できる無料のオンラインツールです。Google Docsのコード版とイメージしてください！
初心者におすすめな理由：
✅ インストール不要 ✅ セットアップ不要 ✅ よく使うライブラリがあらかじめインストール済み ✅ 無料でGPUが使える（高速計算用） ✅ 他の人と簡単に共有できる ✅ Google Driveに自動保存 ステップ1：最初のノートブックを開く 次のリンクをクリックして、最初のGenJAXノートブックを開きましょう：
📓 開く：第2章 - はじめてのGenJAXモデル
何が起きたの？ Jupyterノートブックが開きました。これは以下を組み合わせたインタラクティブなドキュメントです：
テキスト（こういった説明文） コード（実行できます） 可視化（グラフやプロット） 確率の実験を記録するラボノートのようなものです！
ステップ2：コピーを作る（編集できるように） ノートブックを開くと、「You are using Colab in playground mode.」という黄色いバナーが表示されます。
「Copy to Drive」をクリック（右上またはバナー内）
これで自分で編集・保存できるコピーが作られます！
重要！ Driveにコピーしないと、ブラウザを閉じたときに変更内容が保存されません！
ステップ3：インターフェースを理解する 各部分を確認しましょう：
ノートブックの構造 Colabノートブックはセルで構成されています。セルは次のどちらかを含む小さなボックスです：
テキストセル（この説明のようなもの） コードセル（実行できるPythonコード） コードセルの実行 次のようなコードが入ったセルを見たことがありますか？
1 print("Hello, Chibany!") 実行するには：</description></item><item><title>オプション：ローカルインストール</title><link>https://josephausterweil.github.io/probintro/ja/genjax/local-install/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/local-install/index.html</guid><description>準備中の章 この章は長らく予告されながら未執筆でした——Part IIのコンテンツパスで執筆中 です。それまでは、インストール不要のGoogle Colabを ご利用ください。
**扱う内容。**ColabではなくローカルマシンでGenJAXを動かす方法：Python環境 （conda/venv）、jaxとgenjaxのインストール、本書最初のモデルによる動作 確認、Colabとの違い（無料GPUなし、ただしセッションのタイムアウトもなし）。
本プロジェクトは日本確率計算コンソーシアム協会（JPCCA）の助成を受けています。</description></item><item><title>GenJAXのためのPython基礎</title><link>https://josephausterweil.github.io/probintro/ja/genjax/python-basics/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/python-basics/index.html</guid><description>プログラマーになる必要はありません！ この章では、GenJAXのコードを読んで実行するために必要最低限のPythonを学びます。ソフトウェア開発者になる必要はありませんが、次のことができるようになります：
コードが何をしているかを理解する 値を変えて実験する 例を実行して結果を確認する レストランで注文できる程度のイタリア語を学ぶようなものです — 流暢に話せなくても、実用的な知識があれば十分です！
1. 変数：物に名前をつける Pythonでは、後で使えるように値に名前をつけます。
1 2 probability_hamburger = 0.5 probability_tonkatsu = 0.5 意味：「これらの数値を記憶して、この名前で呼ぶ」
確率との対応： 数学で $P(H) = 0.5$ と書いたように、その値を保存しています。
試してみよう：
1 2 3 4 x = 10 y = 20 result = x + y print(result) # Shows: 30 #記号について # の後に続くものはすべてコメントです — 人間のためのメモで、コンピュータには無視されます。
1 2 # This is a comment x = 5 # Comments can go after code too 2. 関数：アクションのレシピ 関数とは、命令に名前をつけたものです。レシピのようなものだと思ってください。</description></item><item><title>はじめてのGenJAXモデル</title><link>https://josephausterweil.github.io/probintro/ja/genjax/first-model/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/first-model/index.html</guid><description>集合からシミュレーションへ Chibanyの日々の食事を覚えていますか？ 標本空間 $\Omega = \{HH, HT, TH, TT\}$ を列挙して可能性を数えました。
今度は、コンピュータにそれらの結果を生成させてみましょう！
生成的プロセス 毎日：
昼食が届く — ランダムにH（ハンバーガー）またはT（とんかつ）（等確率） 夕食が届く — ランダムにH（ハンバーガー）またはT（とんかつ）（等確率） その日を記録する — 食事のペア GenJAXでは、これを生成関数として表現します。
はじめての生成関数 GenJAXによるChibanyの食事は次のとおりです：
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import jax from genjax import gen, flip @gen def chibany_day(): """Generate one day of Chibany's meals.""" # Lunch: flip a coin (0=Hamburger, 1=Tonkatsu) lunch_is_tonkatsu = flip(0.5) @ "lunch" # Dinner: flip another coin dinner_is_tonkatsu = flip(0.5) @ "dinner" # Return the pair return (lunch_is_tonkatsu, dinner_is_tonkatsu) 重要：flip()を使うこと（bernoulli()ではなく） GenJAXにはベルヌーイ分布のための関数が二つあります：flip(p) と bernoulli(p) です。常に flip(p) を使ってください — 直感どおりに正しく動作します！</description></item><item><title>トレースを理解する</title><link>https://josephausterweil.github.io/probintro/ja/genjax/traces/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/traces/index.html</guid><description>コードが実行されるとき何が記録されるか？ 通常の Python 関数を実行すると、処理を行って値を返します。それで終わり — 内部で何が起きたかの記録は残りません。
GenJAX は異なります。 生成的関数を実行すると、GenJAX は トレース を生成します。これは以下の完全な記録です：
どのようなランダムな選択が行われたか それらがどのような値を取ったか 関数が何を返したか この実行がどのくらい確率的だったか まるで実験のあらゆる詳細を自動的に記録する実験ノートのようなものです！
トレースが重要な理由 端的に言えば： トレースは 推論 を可能にします — 「もしこれを観測したらどうなるか？」という問いに答えること。
シナリオ例：
chibany_day() を実行すると (0, 1) が返ってきた — 昼食はハンバーガー、夕食はとんかつ トレースには「昼食に 0、夕食に 1 を選んだ」と記録される 後で次のように問うことができる：「夕食がとんかつだったとき、昼食もとんかつだった確率は？」 トレースにより、観測から原因への逆方向の推論が可能になります！
これについては第 4 章で詳しく探ります。まず、トレースに何が含まれるかを理解しましょう。
トレースの構造 生成的関数を思い出してください：
1 2 3 4 5 6 7 8 import jax from genjax import gen, flip @gen def chibany_day(): lunch_is_tonkatsu = flip(0.5) @ "lunch" dinner_is_tonkatsu = flip(0.5) @ "dinner" return (lunch_is_tonkatsu, dinner_is_tonkatsu) 実行すると：</description></item><item><title>条件付けと推論</title><link>https://josephausterweil.github.io/probintro/ja/genjax/conditioning/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/conditioning/index.html</guid><description>シミュレーションから推論へ これまで、GenJAX を使って結果を生成してきました――起こりうることをシミュレートしてきたのです。
次は推論を学びます――観測結果から原因へと逆方向に論理を進めることです。
これが確率的プログラミングの核心です！
📓 インタラクティブノートブックあり 実践的な学習を好む方へ？ この章には、Bayesian 推論をインタラクティブに体験できるサンプルコード・可視化・演習付きの**Jupyter ノートブック（Colab で開く）**が用意されています。先にノートブックを進めてからここに戻ってきても、両方を並行して使っても構いません！
復習：条件付き確率 確率チュートリアルで学んだ条件付き確率を思い出しましょう：
「$B$ が観測されたとき、$A$ の確率はいくらか？」
記法： $P(A \mid B)$
意味： 標本空間を $B$ に含まれる結果のみに制限し、その制限された空間内での $A$ の確率を計算する。
公式： $P(A \mid B) = \frac{P(A \cap B)}{P(B)} = \frac{|A \cap B|}{|B|}$
📘 基礎概念：制限としての条件付け チュートリアル 1・第 4 章から、条件付き確率とは標本空間を制限することであることを思い出してください：</description></item><item><title>行動する推論</title><link>https://josephausterweil.github.io/probintro/ja/genjax/inference-in-action/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/inference-in-action/index.html</guid><description>準備中の章 この章は長らく予告されながら未執筆でした——Part IIのコンテンツパスで執筆中 です。
**扱う内容。**Part IIの総仕上げ：Part Iで 手計算したタクシー問題を、GenJAXで最初から最後まで解きます。生成モデルを 定義し、目撃者の証言で条件付け、重み付き重要度サンプリングを実行し、事後分布 が手計算と一致するのを確かめます。一つの実例に、前章までのすべての道具が登場 します。
本プロジェクトは日本確率計算コンソーシアム協会（JPCCA）の助成を受けています。</description></item><item><title>自分でモデルを作る</title><link>https://josephausterweil.github.io/probintro/ja/genjax/building-models/index.html</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://josephausterweil.github.io/probintro/ja/genjax/building-models/index.html</guid><description>レシピを使うことから、自分で作ることへ GenJAX を例題を通して学んできました。いよいよ 自分の 確率モデルを構築する時間です！
この章では、生成モデルの作り方——現実の問題をコードに変換する方法——の 考え方 を学びます。
モデル構築のプロセス ステップ 1: 問題を理解する コードを書く前に、次の問いに答えてください：
何を予測・理解しようとしているか？ （問い） 何を観測しているか？ （データ／証拠） 何が隠れているか？ （未知の変数） それらはどのように関係しているか？ （因果構造） 例： スパムメール検出
問い： このメールはスパムか？ 観測： メールの内容、送信者、時刻 隠れた変数： 真のスパム状態 関係： スパムメールには特定の単語パターンがある ステップ 2: 生成ストーリーをスケッチする データを生成するプロセスを書き出します：
「最初に、自然界は…を選ぶ。次にそれに基づいて…を生成し、…を生み出す。」
例： コイン投げ
まず、コインには（隠れた）バイアスパラメータがある そのバイアスに基づいて、各投げは表か裏になる 投げた結果の系列を観測する この物語がそのままコードになります！
ステップ 3: 分布を選ぶ 各確率的な選択について、分布を選んでください：
変数の種類 よく使う分布 二値（はい/いいえ） flip(p) カテゴリカル（A/B/C） categorical(probs) カウント（0, 1, 2, …） poisson(rate) 連続値 normal(mean, std), uniform(low, high) シンプルに始めましょう！ ほとんどの二値の選択には flip を使ってください。</description></item></channel></rss>