メインコンテンツに移動
土木学会 構造工学委員会 構造工学でのAI活用に関する研究小委員会 土木学会 構造工学委員会
構造工学でのAI活用に関する研究小委員会

メインメニュー

  • 委員会サイトホーム
  • 土木学会ホーム

構造工学委員会 構造工学でのAI活用に関する研究小委員会メニュー

  • 構造工学委員会 構造工学でのAI活用に関する研究小委員会ホーム
  • お知らせ
  • 教材・チュートリアル

ユーザログイン

(共用パソコンではチェックを外してください)
  • パスワードの再発行

現在地

ホーム

土木工学におけるAI応用チュートリアル(5)

投稿者:杉崎 光一 投稿日時:金, 2020-12-11 10:59

事例でAIのできることを知ろう

その2 時系列データに対する機械学習例(阿部雅人,杉崎光一,竹谷晃一)

 多変量解析や時系列データなどにも機械学習は適用できます.実際のデータには異常の有無は既知でないことが多いですが,あらかじめ異常がわかっているものや,異常を模擬した試験体等でデータを得ることができれば,教師あり学習を行うことができます.教師データが得られない場合には,教師なし学習が開発されており,データに応じて適切な手法を選ぶことが課題です.

 

分類

適用条件

適用の際の課題

メリット

教師あり学習

教師付けされたデータが多く手に入る場合

・未知の異常を検知できない

・手法が理解しやすい

・異常の説明がしやすい(特徴量の変化に対する評価)

・学習したデータ以外にも適用できる 

教師なし学習

異常を含むデータが多く手に入る場合

・異常データが観測されていない場合がある

・モデルの説明性

・異常の種類や頻度を決められる

半教師あり学習

異常データがあまり手に入らないがデータ自体が多く手に入る場合

・そもそも正常データの特徴を学習できるか(特徴量がみつからない,ばらつくなど)

・モデルの説明性

・正常ではないが異常でもない事象を抽出した時の解釈性

・対象データごとの正常モデルを作れる

 

〇実装事例(サンプルプログラム)

 ここでは振動や音の波形データを利用して,特徴を学習させて予測や異常検知をする方法について記載します.具体的にはコンクリートを打音した際の音圧データを利用した浮きの検知について実装します.

 データを作成するためには,計測や試験の条件等様々な検討が必要です.ここでは,叩いた位置の浮きの有無がわかっているとして,打撃した際の音をマイクで収録した音圧データがcsvファイルで得られているとします(なお,本データは東工大竹谷研究室で行った試験のデータの一部を利用させて戴いております).音圧データに対して浮きの有無を分類する2値の分類問題を実装したプログラムを紹介します.

 分類では,利用するモデルはニューラルネットワークを使い,入力を波形データ(要素数3000の1次元ベクトル),出力を2要素の1次元ベクトル(浮きがある確率,浮きが無い確率)としております.この場合の波形は時系列ですが,モデルは一般的なDNNモデルを利用しており,特に隠れ層での関係は利用していません.近年ではニューラルネットワークの層を深くする深層学習により精度が向上するような問題が多く取り上げられていますが,深層学習はデータを表現するための特徴量が多くなる問題で有効です.本問題では,分類のための特徴量はそれほど多く必要が無いと考えられ,それほど層を深くしなくても分類ができる例となっています.なお,層を深くするなどの改良は簡単に行うことができます.

 

浮き有無と音圧波形の比較

浮き有無とパワースペトルの比較

学習結果

 

※サンプルプログラム

データ(本データは東工大竹谷研究室で行った試験のデータの一部を利用させて戴いております)

sample_daon_csv

https://committees.jsce.or.jp/struct10/system/files/daondata.zip

 

打音データを学習して,異常個所を分類するプログラム

https://committees.jsce.or.jp/struct10/system/files/sample_daon_csv.py_.txt

 

添付サイズ
Image icon 学習結果.png8.65 KB
Image icon 浮き有無とパワースペクトル.png16.67 KB
Image icon 浮き有無と音圧波形の比較.png35.2 KB
Plain text icon sample_daon_csv.py_.txt4.5 KB
Package icon daondata.zip29.89 MB

(c)Japan Society of Civil Engineers