2. 研究手法

2.1 対象問題:2D鍋自然対流

底面加熱された鍋断面内の水の自然対流を、定常Boussinesq近似のもとで解く。

支配方程式(無次元化済み):

$$u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y} = -\frac{\partial p}{\partial x} + Pr \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)$$

$$u \frac{\partial v}{\partial x} + v \frac{\partial v}{\partial y} = -\frac{\partial p}{\partial y} + Pr \left( \frac{\partial^2 v}{\partial x^2} + \frac{\partial^2 v}{\partial y^2} \right) + Ra \cdot Pr \cdot \theta$$

$$\frac{\partial u}{\partial x} + \frac{\partial v}{\partial y} = 0$$

$$u \frac{\partial \theta}{\partial x} + v \frac{\partial \theta}{\partial y} = \frac{\partial^2 \theta}{\partial x^2} + \frac{\partial^2 \theta}{\partial y^2}$$

物理パラメータ:

パラメータ 備考
Ra (Rayleigh数) $10^4$ 物理値 $\sim 4 \times 10^9$ をオーバーライド
Pr (Prandtl数) 3.67 水 (~50°C)
Bi_side (側面Biot数) 1.56 $h_{side} L / k$
Bi_top (上面Biot数) 2.34 $h_{top} L / k$
AR (アスペクト比) 2.0 $W/H$
鍋幅 × 水深 20cm × 10cm 有次元
底面温度 / 環境温度 100°C / 25°C

境界条件: - 底面 ($y = 0$): $\theta = 1$(Dirichlet加熱)、$u = v = 0$(no-slip) - 左右壁: $\partial \theta / \partial n = -Bi_{side} \cdot \theta$(Robin対流放熱)、$u = v = 0$(no-slip) - 上面 ($y = 1$): $\partial \theta / \partial y = -Bi_{top} \cdot \theta$(Robin対流放熱)、$v = 0$, $\partial u / \partial y = 0$(free-slip)

2.2 ネットワーク構造と学習手法

2ネットワーク分離設計:

項目 HeatNet FluidNet
入力 $(x, y)$ $(x, y)$
出力 $\theta$ (1次元) $(u, v, p)$ (3次元)
隠れ層 6層 × 64ノード 6層 × 64ノード
活性化関数 Tanh Tanh
入力正規化 ScalingLayer ($[-1, 1]$) ScalingLayer ($[-1, 1]$)
総パラメータ数 約21K 約21K

Picard反復による段階的学習:

  1. Phase 1 (heat_only): HeatNet を Laplace方程式($u = v = 0$)で学習。FluidNet凍結。
  2. Phase 2 (fluid_only): FluidNet を凍結HeatNetの $\theta$ を使ってNS方程式で学習。HeatNet凍結。
  3. Phase 3 (coupled): 両ネットワークを同時学習。

Phase 2-3 を $N = 5$ 回繰り返す。各Picard反復で学習率を $0.5^{iter}$ に減衰。

学習設定:

項目
各フェーズのエポック数 10,000
初期学習率 $5 \times 10^{-4}$
オプティマイザ AdamW (weight_decay=0.01)
スケジューラ CosineAnnealingLR
勾配クリッピング max_norm=1.0
内部コロケーション点 6,000
境界点(各辺) 300
チェックポイント間隔 200エポック

2.3 解析手法

CKA相転移解析

Linear CKA (Kornblith et al., 2019) を用いて、チェックポイント間の内部表現の類似度を計算した。

$$\text{CKA}(K, L) = \frac{| L^T K |_F^2}{| K^T K |_F \cdot | L^T L |_F}$$

ここで $K$, $L$ は各チェックポイントにおける中間層の活性値から計算されるグラム行列。2,000点の評価グリッド上で各Tanh層の活性値を抽出し、以下の3つの視点で可視化した:

  1. 変化速度: $1 - \text{CKA}(t, t+1)$ — 連続チェックポイント間の変化率(対数スケール)
  2. 累積ドリフト: $\text{CKA}(\text{phase_start}, t)$ — フェーズ開始時からの表現変化量
  3. ヒートマップ: 全チェックポイントペアのCKA類似度行列

損失ランドスケープ可視化

Li et al. (2018) のフィルタ正規化手法に基づき、学習済み重み $\mathbf{w}^*$ の周辺における2次元損失面を可視化した:

$$\mathcal{L}(\alpha, \beta) = \mathcal{L}(\mathbf{w}^* + \alpha \mathbf{d}_1 + \beta \mathbf{d}_2)$$

ここで $\mathbf{d}_1$, $\mathbf{d}_2$ はフィルタ正規化されたランダム方向。$41 \times 41$ のグリッド上で $\alpha, \beta \in [-0.5, 0.5]$ の範囲を走査した。

2.4 実験環境

  • フレームワーク: PyTorch
  • ハードウェア: GPU (CUDA)
  • チェックポイント総数: 約120(全Picardフェーズ、200エポック間隔)
  • 解析評価点: CKA=2,000点、損失ランドスケープ=4,000内部点+200境界点/辺