コード例からすれば、『計算グラフ』って、どんなAPPのプルグラムでもとっくにみんながやってきたようなものではと思いますね。。。
逆に、『非計算グラフ』的なやり方(コーディング)はどんなものでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 04:51 編集
回答3件
0
グラフ解析せずパラメーターの更新を行う方法にコスト関数の微分値(近似値)を計算した結果を用いることが考えられます。微分値は、与えられた値に対して極小値の加算、減算した2点から近似値が得られるので、あとはこの結果をもとにパラメーターを更新すれば求める結果が得られます。
ただこの方法はかなり原始的なので、効率的ではありません。誤差逆伝播に代表されるグラフ解析に基づく方法のほうがいいのでしょう。
少し変わったものとしてベイズ統計に基づくパラメーター推計というものもあります。この方法は、パラメーターの分布をMCMCを使ってサンプリングして推計するので、コスト関数そのものが必要なく、結果、グラフ解析も不用です。このアプローチはベイジアンネットワークとして進化しているので有望ではないかと思っています。tensorflowにも取り込まれるという話も聞いたので、そのうち実装例が公開されるかもしれません
投稿2018/09/03 04:16
総合スコア3376
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/03 04:57 編集
2018/09/05 12:18
0
ネットワーク構造を決め打ちして、重み更新の式を手計算で解いておいてハードコーディングするというパターンでしょうか?
多層パーセプトロンを実装してみた - Masaponto's Blog
誤差逆伝播法における行列演算まとめ
もう少し洗練された奴だと、自動微分のアルゴリズムを実装して層の数は増減できるようにしてみた・・・とかそんな感じでしょうか。
https://github.com/scikit-learn/scikit-learn/blob/f0ab589f/sklearn/neural_network/multilayer_perceptron.py#L40
(sklearnのは斜め読みしただけなので、内容を勘違いしているかも)
計算グラフ的なコーディングだと宣言的に書けるのが嬉しいのですが、もっと手続き的に書いていくというアプローチも当然あるでしょう。
当然ですが、どちらにせよ同じ理論にのっとって成立しているのであって、本質的に何か違うとかはありません。
投稿2018/08/18 13:41
総合スコア30933
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 14:03
2018/08/18 14:13
2018/08/18 21:03 編集
2018/08/19 09:25
2018/08/19 13:20 編集
2018/08/19 13:32
2018/08/20 10:00 編集
0
グラフ解析を行わずに、「闇雲に行列計算を行う」っていうのはどうでしょう?
多分、期待と違いますよね。計算量に比べ計算器が非常に非力だった時代は、数桁くらい減らしてしてもしかたがなかったので、あきらめていたような気がします。さらに逆拡散を使わずにSAとか、GAとか使ったものは「隠れ層があって、..」みたいな層数が少なかった古い論文探せば見つかる気もします。
SA = simulated annealing です。
私は、SAは考え方として汎用的ではあったのですが、収束速度が遅く実用的では無い、さらに冷却方法に任意性が高すぎて性能評価でさえ怪しい と考えています。
投稿2018/08/18 06:08
総合スコア580
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 09:32
2018/08/19 02:03
2018/08/19 04:10
2018/08/20 04:41
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。