![](img/logo_examples.png)
活用例
ヨットの残留抵抗予測
![](../img/examples/yacht.jpg)
この例では、セーリングヨットの残留抵抗を予測するモデルを構築します。 ここで用いるデルフトデータセットは、デルフト工科大学の船舶流体力学研究所でおこなわれた308個の実物大実験のデータで構成されています。 "Standfast 43"というヨットから派生した、22種類の船体形状を対象とした実験データです。 データ項目としては、船体形状を表す数値に加え、浮心の垂直位置と、フルード数が含まれています。 これらの入力をもとに単位排水重量あたりの残留抵抗値を予測します。
リンク:
アプリケーションの選択
予想する変数(残留抵抗)は連続的なので、近似モデルとなります。
この事例の主な目標は、形状と速度に関する値の関数としてヨットの残留抵抗をモデル化することです。
データセットの設定
最初のステップは、近似モデルの情報源であるデータセットの準備です。 データセットは以下で構成されています。
- データソース
- 変数
- インスタンス
このデータセットでは、インスタンスの数(行数)は308個、変数の数(列数)は7個です。 変数は以下の通りです。
入力
- 浮心の垂直位置
- プリズマティック係数
- 長さ-排水量比
- 幅-喫水比
- 幅-長さ比
- フルード数
ターゲット
- 単位排水重量あたりの残留抵抗
このデータセットを訓練用、検証用、テスト用に分割します。 それぞれのインスタンス数が60%、20%、20%の比率になるようにランダムに分けます。 具体的には、訓練用が186個、検証用とテスト用が61個となります。
データセットの設定が済んだら、データの質を確認します。
まず、ターゲットの分布を計算しプロットします。
下の図が、ここでのターゲットである残留抵抗のヒストグラムです。
見ての通り、ほとんどのインスタンスの残留抵抗は低い値に集中しています。
次の図は、各入力とターゲットの相関を表しています。
"froude_number: フルード数"が残留抵抗と強い相関を持つことが見て取れます。
ネットワーク構造の設定
次のステップはニューラルネットワークの構造の設定です。 近似モデルでは通常、ニューラルネットワークは次のように構成されます。
- スケーリング層
- パーセプトロン層
- アンスケーリング層
スケーリング層
スケーリング層は、入力の統計情報とスケーリング手法を含みます。 ここでは最小値と最大値のスケーリング手法を採用しますが、平均値と標準偏差のスケーリング手法を用いても非常に似た結果を出します。
パーセプトロン層
この事例では、2つのパーセプトロン層を使います。 1つ目の層は6つの入力を持つ3つのニューロン、2つ目の層は3つの入力を持つ1つのニューロンです。 1層目、2層目それぞれの活性化関数は双曲線正接関数と線型関数に設定します。これはデフォルトの設定です。
アンスケーリング層
アンスケーリング層では、ニューラルネットワークから得られる正規化された値を、元のターゲットに合わせて変換します。 ここでも最小値と最大値のアンスケーリング手法を使います。
以下の図が、この例のネットワーク構造です。
学習手法の設定
次のステップでは、学習手法を選択します。 一般的な学習手法は、2つのコンセプトで構成されています。
- 損失関数
- 最適化アルゴリズム
損失関数
この例では誤差項に、出力値とターゲットの値の間の正規化二乗誤差を選びます。 一方、正則化項はこの例では用いません。
最適化アルゴリズム
最適化アルゴリズムには、準ニュートン法を選択します。
学習手法の設定が完了したら、ニューラルネットワークに学習をさせます。
次の図は、学習過程において、エポック数(学習の繰り返し回数)に応じて訓練誤差(青)と検証誤差(オレンジ)が減少していく様子を示しています。
トレーニングの結果で最も重要なのは、最終的な検証誤差です。
これがニューラルネットワークの汎化性能の指標となります。
この例では、最終的な検証誤差は0.007NSEです。
モデル選択
モデル選択アルゴリズムは、ニューラルネットワークの汎化性能を改善するために用いられます。
この例では、上で達成した検出誤差が非常に小さい(0.007NSE)ため、モデル選択アルゴリズムは必要ありません。
テスト分析
次のステップでは、ニューラルネットワークの汎化性能を計測するためにテスト分析を行います。 ここでは、ニューラルネットワークの出力値をターゲットの実際の値と比較します。
近似モデルの一般的なテスト手法は、ここまでの学習とは独立なテスト用インスタンスを用いて、出力値と実際の値の線型回帰分析を行うことです。
以下の図は、このテスト解析の結果をプロットしたものです。
実線は、出力値と実際の値との関係の線型近似です。
相関係数R2は1に非常に近く、残留抵抗値の全範囲にわたって正しく予測できていることがわかります。
モデルの利用
ここまででニューラルネットワークは、見たことのない船体形状や速度に対しても残留抵抗を予測できる状態になっています。
Directional outputは、1つの入力値の関数として、ある基準点を通る出力値をプロットします。 例えば、基準点の入力値を
- 浮心の垂直位置: 0.45
- プリズマティック係数: 0.6
- 長さ-排水量比: 4.34
- 幅-喫水比: 4.23
- 幅-長さ比: 2.73
- フルード数: 0.287
![](img/yacht/directional.png)