🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2617閲覧

畳み込みニューラルネットによる時系列予測をしたいです!

0416namazu

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/01/13 17:13

前提・実現したいこと

現在、畳み込み層を使用した時系列予測のモデルを作成しています。
しかし、全結合だけのモデルと比べると格段に精度が落ちます。
色々調べて、重みの初期値、フィルターの大きさ、学習率など変更してみましたが依然、精度は悪いままです。
正規化しているにも関わらず大体二乗和誤差が4.0に収束します。

問題点のご指摘、精度を上げるアドバイスをお願い致します。
初心者の為、わかりやすく教えて貰えると助かります。

当方、プログラミング言語はpythonを使用しております。

具体的に話します。
使用するデータは、全国各地から集めた12年分の月毎の気温データです。
データの個数は約20,000個です。
データの形状は12年×12ヶ月と気温データを並べて(1,12,12)です。

CNNの構造は
1、畳み込み層
(フィルターの数10、フィルターの大きさ55、パディング0、ストライド1)
2、pooling層
(2
2のmaxpooling)
3、Relu
4、全結合層
5、Relu
6、全結合
7、恒等関数
と言う具合です。

keras を使用したいのですが、ボスからお達しもあり自作でCNNを作らなければいけません。
構造上や考え方での問題点など、些細なことでもご指摘頂けるとありがたいです。

よろしくお願い致します。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

フィルターの大きさを1、3、5、7、9、11で試しました。
重みの初期値 Relu関数を活性化関数に使用しているためHeの初期値を使用しました。
学習率を0.1、0.01、0.001、0.0001を試しました。
損失関数は二乗和誤差を使用していますが、3.0〜4.0で収束します。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/01/14 01:58

> 全国各地から集めた12年分の月毎の気温データ は、それぞれの場所に付いて、12年x12ヵ月=144個のデータがあるのですか? もしそうなら、たくさんの場所の内の一つの場所だけで > データの形状は12年×12ヶ月と気温データを並べて(1,12,12) となると思うのですが、別の場所のデータは、どのように格納しているのですか? 学習する際は、一つの場所のデータだけ使うのですか?
jbpb0

2021/01/14 02:39

> keras を使用したいのですが、ボスからお達しもあり自作でCNNを作らなければいけません。 一旦kerasで作って、うまくいってから自作コードに置き換えていったらいかがでしょうか? 現状のやり方だと、いろんな可能性があって、よく分からないですよね ・入力データの作り方がおかしい ・ネットワーク構成が適切ではない ・ネットワークを構成する各層のコードにバグが有る ・学習パラメータが適切ではない ・学習のコードにバグが有る (他にもあるかも) あるいは、自作CNNを、mnistで分類できるように改造(入力の画素数を合わせる、出力を10クラスに)して、そこそこ精度が出るか確認してみるとか それが大丈夫なら、バグの可能性は減ります
jbpb0

2021/01/14 03:01

12x12のデータで > フィルターの大きさ5*5、パディング0 だと、端(最初と最後の年、最初と最後の月)付近のデータの寄与が減ってしまうので、パディングを入れた方がいいのではないでしょうか?? あ、でも、 > フィルターの大きさを1、3、5、7、9、11で試しました。 フィルターの大きさ1だと、入力データ全体に同じ係数がかかるだけなので、実質何もしてないですよね その場合は、パディングは要らないですよね それでも精度が落ちるのなら、プーリング層が悪さしてるのかなぁ 何だろう
jbpb0

2021/01/14 03:12

畳み込みとプーリングのサイズをどちらも1にして、つまりその層はあるけど実質効果無い(入力に係数掛かるだけでそのまま出てくる)状態にしたら、層数が同じで全結合だけの場合と同じくらいの精度になると思うのですが、実際そうなるのでしょうか? もし上記で同程度の精度になるなら、そこからプーリングを2x2にするだけで精度が落ちてしまう、ということになりますよね
A_kirisaki

2021/01/14 04:48

ボスと相談したほうが信頼関係も築けてよいのでは……
0416namazu

2021/01/14 10:49

jbpb0さん パディングは試していませんでした試してみます! A_kisisakiさん ボスに相談しているのですが、ボスも専攻ではない為苦戦している状況です????
0416namazu

2021/01/14 10:58

jbpb0さん 全結合だけの場合と同じ程度の精度にならなかったのはpooling層を挟んでしまっていたからでした????
jbpb0

2021/01/14 11:20

今のデータの形だと、12月と1月が連続して関連しているという情報を捨ててますよね 翌年の前半を12月の後につなげる、とかした方がいいかも(年の前半が2回データに入りますが)
Surpris

2021/01/14 12:00 編集

二点気になったことがあるのでコメントします。 ①時系列予測と聞くと回帰型ニューラルネットワーク(RNN)を想像しますが、今回は RNN を使用せず畳み込み層と全結合層のみで構築した CNN で予測したいということですかね。 もし CNN にこだわりが無ければ、RNN(LSTM など)を利用すると精度が上がるかもしれません。 ※入出力データの構造や解決したい課題に依るので、RNN を用いても必ず精度が上がるわけではありません。 ②自作といっても色々なレベルがあると思いますが、keras を利用しないということなので、ご自身で畳み込み層などを実装しているということですかね。 そうであれば、ご質問の内容というよりは自作に関して、例えば『ゼロから作るディープラーニング』という書籍が実装の参考になるかと思います。 書籍の情報が掲載された URL を以下に示します: https://www.oreilly.co.jp/books/9784873117584/
0416namazu

2021/01/14 14:45

Surprisさん 貴重なご意見ありがとうございます! データの形状が3次元(1,12,12)ということもあり、時系列の連続性を壊しているかもしれないので精度が悪いままかもしれませんが検討してみたいと思います。 さっそく、紹介していただいた書籍を注文してみました^^
Surpris

2021/01/14 15:47

0416namazu 様 先ほど提供した情報がお役に立てば幸いです。 他の方のコメントも拝見して、他に気になったことを2点記します。 1. 何を予測したいか。 入力は12年x12か月の気温データで良いとして、何を予測されるのでしょうか。 例えば 2009年~2020年の12年分のデータを 12x12 の配列データとして入力し、2021年の気温を予測されるのでしょうか。 2. 約 20,000 個のデータはどういう内訳か。 全国の約 20,000 箇所の地点のデータが1セットずつあるということでしょうか。 それとも全国各地のデータが数個以上あり、それらを総合すると 20,000 個前後あるということでしょうか。 以下、関連記事の共有です。 もし CNN と RNN を併用されるのであれば、例えば以下の記事が参考になるかもしれません。 『LSTM/RNNとCNNの組み合わせ(はてなブログ)』:http://neuralnet.hatenablog.jp/entry/2016/07/27/065031 『【深層学習】CNNとRNNを組み合わせてみた(Qiita)』:https://qiita.com/God_KonaBanana/items/a6ee73cf0110c044815b また、すでにご覧になっているかもしれませんが、気候変動や気温の予測に関する記事をいくつか共有いたします。 『ディープラーニングで気候変動を予測(京大論文の追試)(Qiita)』:https://qiita.com/takedarts/items/e4dffa6f1946361d2098 『LSTMで1か月の平均気温を予測する(Qiita)』:https://qiita.com/nvtomo1029/items/689c0a19880d1dc41d43 『[Deep Learning解析] 第二回 天気予報によりRNN(Qiita)』:https://qiita.com/Merdane/items/2c5232681a27a0d340ef
0416namazu

2021/01/14 17:22

Surprisさん 情報提供本当にありがとうございます! 本当に助かります^^ 1 : 2009〜2020までので気温データを使用して翌年の気温を予測したいと考えています。 2 : 全国のデータを総合するとデータ数が約20000こになります。 予測を高精度に行うには大量のデータが必要だと思いますが、補完と欠損値を除去する処理をするとどうしてもデータ数が減ってしまいます????
0416namazu

2021/01/14 17:24

↑1の補足です。 2008〜2019年など色々なデータを使用して翌年の気温を予測したいと考えています。
toast-uz

2021/01/30 22:35

言葉でやりとりしても細かい状況がわかりませんので、KerasでもPyTorchでも既存のフレームワークで実装してみて、コードを出して相談ください。そこまで出来てから、独自開発に移行するとよいでしょう。
guest

回答1

0

keras を使用したいのですが、ボスからお達しもあり自作でCNNを作らなければいけません。

一旦kerasで作って、うまくいってから自作コードに置き換えていったらいかがでしょうか?
現状のやり方だと、いろんな可能性があって、よく分からないですよね
・入力データの作り方がおかしい
・ネットワーク構成が適切ではない
・ネットワークを構成する各層のコードにバグが有る
・学習パラメータが適切ではない
・学習のコードにバグが有る
(他にもあるかも)

全結合だけのモデルと比べると格段に精度が落ちます。

フィルターの大きさを1、3、5、7、9、11で試しました。

畳み込みとプーリングのサイズをどちらも1にして、つまりその層はあるけど実質効果無い(入力に係数掛かるだけでそのまま出てくる)状態にしたら、層数が同じで全結合だけの場合と同じくらいの精度になると思うのですが、実際そうなるのでしょうか?
もし上記で同程度の精度になるなら、そこからプーリングを2x2にするだけで精度が落ちてしまう、ということになりますよね

投稿2021/02/28 14:49

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問