第11章. シーケンスモデルに畳み込み法とリカレント法を使う
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ここ数章で、シーケンスデータを紹介した。まず統計的メソッドを使い、次にディープニューラルネットワークを使った基本的なMLメソッドを使う。また、より良い性能を得るためにモデルのハイパーパラメータを調整する方法を探った。
この章では、リカレントニューラルネットワークだけでなく、畳み込みニューラルネットワークを使用することで、シーケンスデータを予測する能力をさらに向上させる可能性のある追加テクニックを見ていく。
シーケンスデータのための畳み込み
第3章では、 、2次元(2D)フィルタリングが画像に渡され、画像を修正し、特徴を抽出する可能性がある畳み込みについて紹介した。時間の経過とともに、ニューラルネットワークはどのフィルタリング値がピクセルに加えられた修正とそのラベルとのマッチングに効果的かを学習し、画像から効果的に特徴を抽出した。同じテクニックが数値の時系列データにも適用できるが、1つだけ変更がある。
例えば、図11-1の数値系列を考えてみよう。
図11-1. 数列
1次元の畳み込みは次のように演算できる。畳み込みは1×3フィルターで、フィルター値はそれぞれ-0.5、1、-0.5とする。この場合、シーケンスの最初の値は失われ、2番目の値は8から-1.5に変換される(図11-2参照)。
図11-2. 数列で畳み込みを使う
フィルタはその後、値をまたぎながら新しい値を計算する。例えば、次のストライドでは15が3に変換される(図11-3参照)。
図11-3. 1次元畳み込みにおける追加のストライド
このメソッドを使えば、画像のピクセルを畳み込んで特徴を抽出するのと同じように、値間のパターンを抽出し、それをうまく抽出するフィルタを学習することができる。このインスタンスンスでは、ラベルは存在しないが、全体の損失を最小にする畳み込みが学習できる。
畳み込みを符号化する
コンボリューションをコーディングする前に、 、第10章で示したように、スライディングウィンドウのテクニックを使ってデータセットを作成する必要がある。コードは本書のGitHubページで入手できる。
データセットを手に入れたら、それまであった密なレイヤーの前に畳み込みレイヤーを追加することができる。これがそのコードで、一行ずつ見ていこう:
classCNN1D(nn.Module):def__init__(self,input_size):super(CNN1D,self).__init__()self.conv1=nn.Conv1d(in_channels=1,out_channels ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access