【深層学習】RNNネットワークとは

AI

深層学習とは

深層学習とは様々な種類のニューラルネットワークを結合し構築されたネットワークです。

ニューラルネットワークとは、人間の神経細胞の仕組みを再現した計算モデルで、入力データに対して重み付けや活性化関数などの処理を行って出力データを生成します。

ニューラルネットワークは大きくフィードフォワード型のネットワーク、CNNネットワーク、RNNネットワークに分類できます。この中でも今回は主に音声認識や時系列解析の分野で多く採用されているRNNネットワークについて解説していきます。

深層学習は音声解析や時系列解析の他にも画像認識、将棋AIなど様々な場面で活用されており、深層学習に関する知識は今後より一層求められると考えられます。

ぜひ、この記事を最後までご覧いたければ幸いです。

RNNネットワーク解説

RNNは回帰結合型ニューラルネットワークとも呼ばれ、Rumelhart(1986)に基づく、時系列構造を持つデータの学習を得意とするニューラルネットワークです。通常のニューラルネットワークは入力層、隠れ層、出力層で構成されるますがRNNは次のように隠れ層に回帰的な結合が追加されます。

RNNネットワーク概念図

ただし、ではわかりやすさのために隠れ層と過去の隠れ層を別で書いていますが、隠れ層そのものは1つで、それが時間情報を持っているだけであることに注意する必要があります。ここで、より具体的なRNNの構造を下図に示します。

RNN

xhbcはベクトルUWVは重み行列を表しています。時刻t-1にとってのhnextは時刻tにとってのhprevであるであることに注意してください。

各タイムステップtにおいて、以下の様に情報が伝播していきます。

この式よりRNNネットワークでは時刻tにおいて、入力xtに重み付けしたベクトルUxtと時刻t-1からの情報ht-1に重み付けしたベクトルWht-1に定数ベクトルbを加えたatを基に出力otが生成されていることがわかります。

つまり、ベクトルUxtに関してはフィードフォワード型ネットワークで解説したWxtと同等なので、RNNはフィードフォワード型ネットワークに回帰的な結合を加えたネットワークであると理解できます。

ネットワーク学習方法

実際のAIプロジェクトの際はRNNネットワークなどを用いてモデルを構築した後に大量の学習データを用いてモデルのパラメータを学習します。

実際に学習する際はモデルの出力データや教師データなどから損失関数を定義し、損失関数が最小となるよう学習していきます。ただし、通常、深層学習を実施する際は誤差逆伝播法を利用して学習しますが、RNNネットワークの場合はデータを時系列で処理しているためBPTT(Backpropagatinon Through Time)という学習方法を利用する必要があるので注意してください。

損失関数としては出力データと教師データの誤差の平均2乗和から算出されるMES(Mean Squared Error)などが有名です。

学習の概要

誤差逆伝播法など学習方法については今後、解説記事を投稿しようと思います。

終わりに

以上、深層学習で最も基本となるCNNネットワークについての解説でした。

ネットワークの概要は掴んでいただけたかと思うので、より深く学習される方は専門書などの足がかりにしていただけますと幸いです。

ご清覧ありがとうございました。

タイトルとURLをコピーしました