タグ

optimizationに関するyukimori_726のブックマーク (84)

  • [PDF] 最適化から見たディープラーニングの考え方 得居 誠也

    c � 1. 5 2011 10 [1] ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 2012 2 10 [2, 3] 1 [4] [5] 2. x ∈ X y ∈ Y z = (x, y), Z = X × Y Preferred Networks 113–0033 2–40–1 4 tokui@preferred.jp S = {zi}N i=1 ⊂ Z f : X → Y F = {fθ|θ ∈ Θ} fθ ∈ F F zi S f z = (x, y) �(f, z) f(x) y ES(f) = ( � z∈S �(f, z))/N ES(f) f z = (x, y) E(f) = Ez[�(f, z)] E(f) E(f) f f [6] f� F f� F F ˆ fF E(f) E(f� ) E(f

  • 数値最適化のインタラクティブ・チュートリアル | POSTD

    「数値最適化」は機械学習における中心的手法の1つです。多くの問題では、最適解を直接突き止めることは難しいものですが、ある解がどれほど適しているかを測定する損失関数を設定し、解を見つけるためにその関数のパラメータを最小化することは比較的容易です。 かつてJavaScriptを初めて学ぼうとしていた時 、結果的に数値最適化ルーチンを多数書きました。そのコードを特に使うこともなく置いていたので、それらのアルゴリズムの動作をインタラクティブな形で可視化したら面白いのではないかと考えました。 記事の良い点は、コードが全てブラウザで実行できることです。つまり、アルゴリズムの動作をより把握するために、各アルゴリズムのハイパーパラメータをインタラクティブにセットしたり、初期位置を変更したり、どの関数が呼び出されるかを変更したりすることができるのです。 (編注:記事ではスクリーンショットのみ公開しており

    数値最適化のインタラクティブ・チュートリアル | POSTD
  • ディープラーニング最適化の有用記事 - HELLO CYBERNETICS

    ディープラーニングの勉強を進める中で有用だった記事を載せておきます。 勾配法のまとめ記事 最適化から見たディープラーニングの考え方 通常の機械学習における最適化の視点 勾配法のまとめ記事 postd.cc 私のブログにたどり着く以前に、既に知っている方も多いと思います。 AdaGradから始まり、Adamまで、現在のディープラーニングに使われている最適化手法をそれぞれ比較してまとめてあります。アルゴリズムも掲載されているため、ここを参考に実装することも可能でしょう。 最適化から見たディープラーニングの考え方 ci.nii.ac.jp オペレーションズ・リサーチ学会のサーベイ論文です。 工学系大学、または大学院レベルの数学がわかれば読み進めることができます。 日語文も詳しいので、数式が分からなくともディープラーニングの学習の概観をつかむには良いでしょう。Adadeltaなどの最適化手法につ

    ディープラーニング最適化の有用記事 - HELLO CYBERNETICS
  • 機械学習を学ぶ上で抑えておきたい数学2 - HELLO CYBERNETICS

    機械学習や深層学習を学ぶ上で、数学は言語である 線形代数学 行列とベクトルは連立方程式を解くための記法 機械学習での活躍 どこまで学ぶか 最適化数学 学習とは 教師あり学習 教師なし学習 最適化を行う際の重要ワード「正則化」 どこまで学ぶ必要があるか 確率・統計 最低限知っておくべき定理や性質 最低限知っておくべき推定法 確率分布には見慣れるしかない 何に役立つのか 情報理論 情報を確率で記述する 何に役立つのか 情報幾何学 発祥は日 機械学習での役割 海外での方が有名? 機械学習や深層学習を学ぶ上で、数学は言語である 以前、学びたい機械学習のレベルに応じて、どんな数学が必要になってくるのかを紹介しました(以下の記事)。 s0sem0y.hatenablog.com そのときにも述べましたが、数学というのは何らかの操作を非常に簡潔に表現してくれます。要するに情報をギュッと圧縮して伝える手

    機械学習を学ぶ上で抑えておきたい数学2 - HELLO CYBERNETICS
  • 評価関数で見る機械学習手法 - HELLO CYBERNETICS

    最近、学習は最適化問題に帰着されるということを自分自身強く意識するようになりました。 そこで有名なSVMや対数線形モデルなどの評価関数を見て、それぞれがどのような狙いを持っているのかを概観してみようと思います。 Support Vector Machine 評価関数 解釈 ソフトマージン 対数線形モデル 狙い 実際の最適化問題 解釈 正則化 正則化項の取り扱い 評価関数の一般的な取り扱い 正則化と最大事後確率推定(Maximum a-posteriori estimation:MAP推定) 対数線形モデルは最大事後確率推定 Support Vector Machine 線形関数 で分離面を構成するのが第一の考え方です。 評価関数 がマージンと呼ばれるもので、これを最大化するのがSVMです。絶対値は取り扱いにくいので、代わりに二乗を考え、分数も厄介なので、逆数を取り、以下の最適化問題に帰着し

    評価関数で見る機械学習手法 - HELLO CYBERNETICS
  • LJの力計算のSIMD化ステップ・バイ・ステップ その0 - Qiita

    はじめに SIMD化、してますか?>挨拶 「京」が128bit、現在のx86系の石が256bit、そしてポスト「京」がSIMD幅可変、ハード512bitという話もあって、もはやSIMD化しないといろいろつらいというか、ポスト「京」が走りだす時に、えらいひとたちがSIMD化率を気にしだしたり、アプリケーションごとにSIMD化率を提出させられたりするような未来が見えなくもないので、私もSIMD化してみようと思います。 で、「ステップ・バイ・ステップ」とあるけれど、これは教材という意味ではなくて、単に私がどういう形でSIMD化をしていったかの作業記録を保存しようという試みです。もっとすごい人はもっとスパッとSIMD化しているんだと思います。 背景 これまでのあらすじ。 LJの力計算をフルアセンブラで書いてみる LJの力計算を組み込み関数で書いてみる LJの力計算を組み込み関数で書いて馬鹿SIMD

    LJの力計算のSIMD化ステップ・バイ・ステップ その0 - Qiita
  • A bug story: data alignment on x86

    I once had to calculate a sum of a vector of integers. This sounds unusual. Who ever wants to do this in real life? Normally, we only see code like this as primary school assignments or compiler benchmarks. However, this time it happened in real life. Well, the actual task was to verify the IP header checksum, which is a ones’ complement sum of two-byte words. Simply speaking, it means adding toge

    A bug story: data alignment on x86
  • 確率的勾配法あれこれまとめ - KAZ log TechMemo

    Kerasで選択できる最適化アルゴリズムそれぞれの違いと使い所がいまいちわからんかったので調べてみた。 Incorporating Nesterov Momentum into Adamがアルゴリズムを整理してくれているので理解しやすかった。 とりあえずざっくりと俯瞰した感じだと、いかに効率良く傾斜を降下していくかという課題を解決するっていう大枠からはみ出るものはない。そんで、構築しているモデルの種類やサイズによってベストなアルゴリズムは変わってくるので、突き詰めるのであれば要実験。ただ、上記論文は、NadamかRSMProp使っときゃいいんじゃないっすか、みたいなこと言ってる。なんにしろ2000年代後半以降で進化が進んでいる分野であり、今後もアップデートがあるだろうから追っていきたい。 SGD まずはオーソドックスな勾配法。 後述するMomentum法や、NAGもKerasの中ではSGD

  • AdaGradが学習率のスケジューリングを上手く調整してくれる理由 - 理論編 - - Qiita

    1. はじめに 機械学習では、多くが目的関数(凸関数)を最適化する問題として定式化され、勾配・劣勾配をヒントとして逐次的に目的関数を下げていくわけです。その際、学習率のスケジューリングに頭を悩ませます。そこで、学習率のスケジューリングに関しAdaGrad[J.Duchi]と呼ばれる手法が有効である事が示されました。実装が容易という背景もあり、一気に広まりました。他にもAdaDelta, RMSProp, Adamなど有名で、Qiitaにも各種法を経験的に比較している投稿[1]があります。 ですので、投稿では実装の話がありません。理論を整理します。なぜ、AdaGradの性能が良いかへの答えは、標準的なSGDよりタイトなRegret上限バウンドを理論的導出したためとなります。 以降で使用するAdaGradはComposite Mirror Descent \mathbf{x}_{t+1} =

    AdaGradが学習率のスケジューリングを上手く調整してくれる理由 - 理論編 - - Qiita
  • Z3による汎用大域的最適化 - Qiita

    概要 Z3 Proverを用いた,"数値的"な大域的最適化手法について示す. Z3 Proverとは? ざっくりとはMicrosoft Researchが作った,MITライセンスの定理証明器です. Z3 is a theorem prover from Microsoft Research. It is licensed under the MIT license. If you are not familiar with Z3, you can start here. Z3 can be built using Visual Studio, a Makefile or using CMake. It provides bindings for several programming languages. See the release notes for notes on various

    Z3による汎用大域的最適化 - Qiita
  • Pythonでベイズ最適化を使ってハイパーパラメータを探索するライブラリ実装のメモ - Qiita

    はじめに ベイズ最適化(参考:ベイズ最適化入門, 機械学習のためのベイズ最適化入門)を使うと、機械学習の時の各種Try&Errorで決めざるを得ないようなハイパーパラメータの探索を効率よく実施できる可能性があります。 考え方などは最近色々解説記事が増えてきたおかげで理解はできるのですが、GridSearchのライブラリみたいな形ではWeb上で見つけられなかったので、今回作りました。きっと車輪の再発明なのだと思うのですが、まあ再発明は勉強にはなるので良しとします。 今回使っている各種Version Python3.5 numpy==1.11.1 scikit-learn==0.17.1 コード from itertools import product from sklearn.gaussian_process import GaussianProcess # The MIT License

    Pythonでベイズ最適化を使ってハイパーパラメータを探索するライブラリ実装のメモ - Qiita
  • GoogleのC++最適化ツールCeres solverを使って複雑な最適化を解いてみた。 - MyEnigma

    非線形最適化の基礎posted with カエレバ福島 雅夫 朝倉書店 2001-04-01 Amazonで探す楽天市場で探すYahooショッピングで探す 目次 目次 はじめに Ceresにおける導関数の指定方法 数値演算的に導関数を与える方法 解析的に導関数を与える方法 その他の導関数の求め方 複雑な最適化の実施 より深く最適化を学びたい人は 参考資料 MyEnigma Supporters はじめに 先日、上げた記事の続きです。 myenigma.hatenablog.com 今回は、もう少しCeresのシステムの詳しい説明と、 複雑な最適化を実際に実装してみたいと思います。 Ceresの基的な部分は先程の記事を参照下さい。 Ceresにおける導関数の指定方法 Ceresは、他の最適化のライブラリと同様に、 評価関数の各変数における導関数を使って、最適化を実施します。 よって、精度が

    GoogleのC++最適化ツールCeres solverを使って複雑な最適化を解いてみた。 - MyEnigma
  • Deep Learningのハイパパラメータの調整 - もちもちしている

    この記事はDeep Learning Advent Calendar 2015 23日目の記事です. はじめに コンピュータセキュリティシンポジウム2015 キャンドルスターセッションで(急遽)発表したものをまとめたものです. また,私の体力が底を尽きてるので,後日に大幅な加筆・修正します. Deep Learning Advent Calendar 21日目の記事はすいません,しばらくお待ちください... Deep Leaningの光と闇 Deep Learningが様々なタスクにおいて大きな成果を上げています.また,各種フレームワークの登場によって,Deep Learningの導入や実践する敷居が大幅に下がりました.このことから,Deep Learningを活用していこうと考えてる,あるいはすでに活用している企業や研究者が増えてきています. Deep Learningによって従来の手法

    Deep Learningのハイパパラメータの調整 - もちもちしている
  • {rBayesianOptimization}パッケージによるベイズ最適化で機械学習パラメータチューニングをお手軽に - 渋谷駅前で働くデータサイエンティストのブログ

    機械学習のパラメータチューニングというと大なり小なり大変な部分があって、今年のエイプリルフール記事に皆さん引っかかって下さったところを見るにパラメータチューニングを簡単に済ませたい!と願う人々は世の中多いようです(笑)。 少し前のMXnetを使った記事でも取り上げましたが、そのパラメータチューニングを迅速に済ませようというアイデアの一つがベイズ最適化(Bayesian Optimization)です。 要は、グリッドサーチのように網羅的に最適なパラメータを探索しに行くのではなく、一つのパラメータで精度をチェックしたらその次は精度が上がりやすそうな方向にベイズ的に逐次改善を行いながら探索していく、という方法のことです。 世の中色々seminar paper的なものがあるようですが、arXivから@enakai00さんが見つけてきて下さったのがこれ。 [1012.2599] A Tutoria

    {rBayesianOptimization}パッケージによるベイズ最適化で機械学習パラメータチューニングをお手軽に - 渋谷駅前で働くデータサイエンティストのブログ
  • Optimizer : 最適化手法の検証 - Qiita

    結果はAdaDeltaが一番高い精度を出し、次点でAdamでした。一応分散も出したのですが、これもAdaDeltaが一番小さいことから安定していることがわかります。 以上のことから、今回の手書き数字10クラス分類というタスクにおいては、分散・精度ともにAdaDeltaが最も適していることがわかりました。 この結果が出るまでは、どうせAdamの圧勝だろーなーって軽く考えていただけに面白い結果が出てしまいました。今回のようなモデルの場合、Adamのバイアスを打ち消す項が逆に学習の収束まで足を引っ張ってしまうのでしょうか。そもそもChainerのAdamが自分が考えている動き方をしているのかも不安なのですが、、 単純にAdamを使っておけばいいという訳ではなさそうですね。 まとめ 最初にも述べましたが、今回の手書き数字分類問題に関してはこのような結果が出ましたが、あくまでこの問題における結果であ

    Optimizer : 最適化手法の検証 - Qiita
  • 確率的勾配降下法

    確率的勾配降下法 機械学習のアルゴリズムの多くは,考えている問題を, 何らかの目的関数の最大化もしくは最小化問題(最適化問題)に落としこんで解く. 最適化問題の解析解を簡単に求められればよいが,そうではない場合は反復法 (適当に与えた初期値を徐々に最適解に近づける方法)に頼ったりする. 今日は,そんな反復法の1つである,確率的勾配降下法のお話. 勾配降下法 まずは,「確率的」勾配降下法の前に,普通の勾配降下法 (gradient descent) について話しておく. パラメータ $\theta$,サンプル $x$ に対する誤差関数を $E(x, \theta)$ とおくと, 勾配降下法では,誤差関数のサンプルに関する期待値 を最小化する.しかし,一般に $p(x)$ は分かんないし,そもそも,上の積分を計算するためには, 起こりうる全てのサンプルを獲得しなければいけない. 普通は母集団は

  • ベイズ最適化についての入門記事を書きました - ほくそ笑む

    ベイズ最適化 (Bayesian Optimization) についての入門記事をマイナビのサイトに寄稿しました。 第3回 機械学習のためのベイズ最適化入門|Tech Book Zone Manatee ベイズ最適化は大域的最適化手法 (Global Optimization) の一種であり、これをグリッドサーチの代わりに使うことで、効率的に機械学習のハイパーパラメータ探索ができる、という内容です。 この記事ではベイズ最適化の基的な部分についてポイントを絞って説明したつもりです。 R言語にはベイズ最適化のためのパッケージ rBayesianOptimization があり、この使い方については下記の記事が詳しいです。 {rBayesianOptimization}パッケージによるベイズ最適化で機械学習パラメータチューニングをお手軽に - 六木で働くデータサイエンティストのブログ また、

    ベイズ最適化についての入門記事を書きました - ほくそ笑む
  • 第3回 機械学習のためのベイズ最適化入門|Tech Book Zone Manatee

    応用範囲が広く幅広い視点からの説明になりがちなベイズ最適化について、記事では機械学習のハイパーパラメータ探索に利用することに限定して解説します。 1. はじめに 最近、ベイズ最適化という手法が注目を集めています。 ベイズ最適化 (Bayesian Optimization) とは、形状がわからない関数 (ブラックボックス関数) の最大値 (または最小値) を求めるための手法です。 ベイズ最適化についての入門記事は Web 上にすでにいくつかありますが、ベイズ最適化は応用範囲が広く、入門記事は様々な応用に向けた幅広い視点からの説明になりがちです。 記事では、機械学習ユーザに向けて、ベイズ最適化を機械学習のハイパーパラメータ探索に利用することに限定して説明します。 これにより、機械学習に対して、ベイズ最適化がどのように利用できるのかを分かりやすく解説したいと思います。 2. ハイパーパラメ

    第3回 機械学習のためのベイズ最適化入門|Tech Book Zone Manatee
  • Optimizer : 深層学習における勾配法について - Qiita

    はじめに 深層学習の勾配法には様々な手法が提唱されています。その中で、どの手法を用いるのが適切であるか自分でもあまり理解できていない部分があり、今回は勾配法の中でも実際に深層学習で主に用いられている手法(SGD, Momentum SGD, AdaGrad, RMSprop, AdaDelta, Adam)について、実装することを前提に調べてまとめてみました。実装フレームワークはChainerを想定しています。 SGD SGD(Stochastic Gradient Descent : 確率的勾配降下法)は、Optimizerの中でも初期に提唱された最も基的なアルゴリズムです。重み$\mathbf{w}$の更新は以下のように行っております。このとき、$E$は誤差関数、$\eta$は学習係数を表しています。 \mathbf{w}^{t + 1} \gets \mathbf{w}^{t} -

    Optimizer : 深層学習における勾配法について - Qiita
  • プログラマのための数学勉強会@福岡#5 で「Goによる勾配降下法 -理論と実践-」を発表してきた

    8/6に開催されたプログラマのための数学勉強会@福岡#5で「Goによる勾配降下法 -理論と実践-」を発表してきました。 今回は勾配降下法にフォーカスした内容となっています。機械学習というブラックボックスが実は誤差を最小化するものであり、そのために勾配降下法というアプローチがある、という基でもあり、数式に抵抗があると最初につまづく箇所でもあります。 今回は数式と図解に加え、Go言語によるサンプル実装も添えることでプログラマへも理解しやすくなるように資料を作ってみました。 また、勾配降下法の手法だけではなく収束速度の改善や学習率の自動調整といった最適化の手法も紹介しているので、基を理解している人もよければ御覧ください。 サンプル実装 発表で使ったサンプル実装はこちらで公開しています。 正弦関数を元にしたトレーニングセットに対して多項式回帰を行うことができます。 このような感じで各種勾配降下

    プログラマのための数学勉強会@福岡#5 で「Goによる勾配降下法 -理論と実践-」を発表してきた