コンピュータに対し、データを元に役立つ規則などを発見させる(すなわち学習する)こと。およびその方法。
ニューラルネットワークから歴史は始まり近年は確率統計の観点から研究されることが多い。 統計の観点から見た場合、与えられたデータに対してモデルを当てはめているだけである。 モデルが複雑である点で従来の統計学と異なっている。
以下、有名な確率モデル
今回はディープラーニング入門編のその1です。まずは簡単な概念から説明していき、最終的にはPythonでニューラルネットワークを構築していきます。 (※)Keras、Scikit-learnなどのライブラリーには直ぐに使える深層学習のフレームワークが多数ありますが、今回はディープラーニングを理解するためお馴染みのnumpyとmatplotlibのみ使用して構築します。 【ディープラーニングとは】 そもそもディープラーニングは、人間の脳のニューラルネットワークに触発された機械学習の一分野です。10年以上前からある理論ですが、計算の進歩と膨大な量のデータの可用性により、従来の機械学習よりも優れている…
「キカガク」の「脱ブラックボックスコース」を受講している。 www.kikagaku.ai ずっと機械学習には興味があったものの、忙しさを理由にしたり、とっかかりが見つけられなかったりで、なかなか学習に手をつけられなかったのだけれど、正月にこの講座を発見して、「1月中には必ず少しだけでも始めよう」と決意し、本日ようやく始めることになった。 講義の内容は、(多少予想はしていたけど)まずは数学の解説だった。最後に数学を勉強したのは高校時代で、もう10年以上数学からはなれている。そして、(この業界にいるにも関わらず)数学は不得手に近い。確率論や期待値は理解できたけど*1、幾何学的な図形の証明問題や三…
注意書き 当方情報系修士二年生、研究はソフトウェア開発にGCNを適用する研究をしています。 フリーランスでPythonやgasを用いた開発も行なっているのでそういう観点からM1 Macbookのレビューをします。 そのためここではweb開発やアプリケーション開発については取り上げません。 はじめに 修論執筆中の恭也Pです。昨年の6月からフリーランスエンジニアとして活動をし始めてた。始めたはいいものの、「働くのはいいけど扶養を外れるとまじで困る」と親に注意されたました。そこでどうにか経費をいうものを使ってみたいと思い、タイミングもいいと思いMacbookPro(学割で17万円、卒業前がお得)を買…
皆さん機械学習やプログラミングの教科書を見ると、学習の結果予想した値の変数名をy_hatとしているのをよく見かけると思います。 column0001 このy_hat、一体何かの略なのでしょうか? 実は統計用語と深い関係があります。下の式を見てください。 column0001 この式は以前行った最小二乗回帰の概念の式ですが、ここでアルファベットの「y」に注目すると「^」マークが上についているのがお分かりになりますか? 小さな帽子(hat)が乗っているみたいで可愛いですね。 この記号を英語で言うと「y_hat」となり、Pythonを含めた多くのプログラミング言語でこの記号自体出力できない、もしくは…
前回に引き続きここでは最小二乗回帰を使ってデータセットの関係性を予測していきたいと思います。 【前回のまとめ】 一次関数と仮定しての回帰は正直かなり微妙な出来だったと思います(下図)。これで「予想できました!」と言われても・・・って感じですね。そこで今回は関数の次数を上げて、2~4次関数と仮定してデータセットを予想してみたいと思います。 【コード】 0004-1OLSregression(2) 前回使用したnp.polyfit()を今回も使います。16行目以降にそれぞれ、2~4次関数と仮定して回帰(予想)をしてくれるように書いています。25行目以降はグラフに重ねて表示してくれるプログラムです。…
ここでは以前作成したテストデータを使います。テストデータを与えて最小二乗回帰という方法を使用して入力と出力の関係性を予想できるでしょうか?? 【最小二乗回帰とは】 そもそも統計的回帰の問題では入力値と出力値の間の関数関係に可能な限り近似する関数を見つけることが目的です。 例えば、今回の入力値と出力値が一次関数の関係性なるべくがあると予想しましょう。(どう見ても違いますがとりあえずです!) 0004-1OLSregression 当然とりあえずで引いている線なので作ったデータセットとは乖離していますよね?この乖離をなるべく小さくした線を最終的に引くことができればうまく予想できたといえそうです!で…
行列バランシングと言えば,sinkhornですが,今回はこの論文を実装しました. arxiv.org (論文では自然勾配法使ってますが,ここでは,1次までしか実装してないです) #include <iostream> #include <Eigen/Dense> #include <vector> #include <cmath> #include <time.h> #include <cstdio> #include <fstream> using namespace std; using namespace Eigen; MatrixXd balance(MatrixXd& P, doub…
ここでは今後機械学習やディープラーニングの学習を進めていくためのテストデータを作成します。 【使用するメソッド】 numpy.linspace() 線形に等間隔な数列を生成します。 pylab.plt.plot() グラフを描画します。 【コード】 0003-2create_testdata 今回は y=3x^3 - 4x^2 となるような三次方程式を作ってみました。描画すると以下のようになります。 0003-2create_testdata 今後はプログラムにこの赤い点の座標だけを与えて、先ほどの三次方程式を見つけてくれるかを見ていきます! 実際にプログラムにテストデータとして入力する際は以…
スーパーマリオの1-1をクリアさせたかったのですが、自分の低スペックパソコンだと「episodes」を500以上に設定すると処理が途中で落ちてしまう。 チュートリアルをみると「episodes」を40000ぐらいにすればクリアできるかもよとあるけど。。。(*´з`) いろいろ設定を変えたりしたけど。。。なかなかうまくいきません。 GPUほしいなぁ。。。今日は試行錯誤したプレイをまとめてみました。 プログラムは#2のときのものを流用してます。 a1026302.hatenablog.com 動きを追加 actionについて 前回 今回 プレイ動画 パラメータ変更 downsampleで学習 前回…
ここでは強化学習の一例で作成した、コイントスの結果を予測するプログラムの解説を行います。 ssp はコインの性質、asp はプログラムの賭け方 簡易版でもご説明した通りsspでは80%の確率で表、20%の確率で裏というこのコインの性質を定義しています。「1」が表、「0」を裏として、この数列からランダムに数字を一つ取り出すと4/5の確率(80%)で「1」=表がでます。 この数列はプログラムがどのように賭けるかを定義しています。この数列からランダムに数字を一つ取り出すと「1」=表に賭ける確率も「0」=裏に賭ける確率も同じく50%ずつです。今回行った強化学習ではこの数列(賭け方)をコインの特性に合わ…
ここでは強化学習の一例としてコイントスの結果を予測するプログラムを作成します。【強化学習とは】 そもそも強化学習とは機械学習手法の一つで、プログラム自体が試行錯誤しながら最適な制御を実現してくれます。学習してもらうデータに正解、不正解はありませんが、目的として設定する「報酬」を最大化するための行動を学習するものです。 今回は80%の確率で表、20%の確率で裏、となる特殊なコインがあったとします。表裏を予想して最大の報酬を得れるように、賭け予想してもらうプログラムを作りたいです。そのためにはどのようにプログラムに学習させれば良いでしょうか。(もちろんこの特殊なコインのことはプログラムは知らせずに…
人間のニューロン活動を模したモデルであるパーセプトロンの実装をしてみました。 ニューラルネットについて 機械学習は推定値と観測値の誤差を更新していくことで モデルを構築する。その時の誤差を目的関数といい、通常 MSE や交差エントロピー誤差関数が使われる。この誤差を最小にするようにパラメータを更新していく。このパラメーターの更新には全てのデータセットを入力する必要があるがそれは現実的ではないので確率的勾配降下法などを用いて計算負荷を抑える工夫をする。 パーセプトロン 受け取った電気の量がしきい値を超えると発火するモデル。 入力信号を、重みを、活性化関数を、出力信号をとすると、 条件 活性化関数…
ここでは教師なし学習の一例として作成したクラスタリングのプログラムの動作を解説していきます。 make_blobs() サンプルデータの生成 今回このメソッドはサンプルデータを作成するために使いました。 n_samples: 生成するサンプルの総数 centers: クラスターの中心の数 random_state: データセット作成のための乱数生成を決定します。 この数字を決めることで何回やっても同じ点群が生成されます。 cluster_std: 中心からの距離の標準偏差 0001-3Clustering さて、この結果どのような配列ができたのでしょうか? 変数の中をのぞいてみましょう。 00…
ここでは教師なし学習の一例としてクラスタリング(分類)を自動でしてくれるプログラムをPythonを使って書いていきます! 【使用するメソッド】 sklearn.cluster KMeans n個の観測値をk個のクラスターに分類します。 make_blobs 好きな数のサンプル(blobs)を生成できます。 【コード】 0001-1Clustering まずは1~3行目で今回使うメソッドをインポートしています。 5行目でサンプルデータの生成、8~11行目が実際に学習を行っている部分です。 13、14行目で結果を表示しました。 実行するとどうなるでしょう?? 0001-Clustering サンプ…
今日は、チュートリアルを参考に強化学習の処理部分が手元の環境で動くようにセットアップしました。コードは少しずつ勉強していこうと思います。 昨日までの取り組み 今日やったこと 本日の進捗 プログラム 学習させた マリオでプレイ 動画出力部分(mp4) とりあえず実行 困っていること 昨日までの取り組み a1026302.hatenablog.com 今日やったこと 学習部分の処理が手元の環境で動くようにする 学習したものでマリオをプレイしてみる 学習したマリオのプレイを動画出力する 本日の進捗 [episodes = 60]で学習させたら、ようやく少し進みました。 これでいいのかなぁ。。。 yo…
一つのテーマを専門に独立したWikiを立ち上げる必要もなく、ブログの様に私見をまとめるものでもない話題、情報を記録するために、あるWikiを立ち上げた。講義の予習ノート 読書ノート メモ 特に非公開にする必要性を感じることなく、公開Wikiとして運用していたのだが、いつしかGoogleにインデックスされ、特定の記事は多くの読者を集めるようになっていった。Evernoteのアクセス端末数制限の取り組みに伴い、データ移行を検討していた。これを機にWikiと合わせて、公開、非公開の情報を区別し、基本的にはMicrosoft OneNoteへ移行することにした。特に読者を集めていた情報のうち、非公開と…
「まぐまぐ!」でメルマガ「知らなかった!中国ITを深く理解するためのキーワード」を発行しています。 明日、vol. 055が発行になります。 「AI(人工知能)は幻滅期に入った」「PoC(概念実証)を行ってみたが、成果は芳しくなかった」という話を耳にしたことがあるかもしれません。 AI幻滅期とは、米ガートナーが、新しいテクノロジーに対する市場の期待度を調査したハイプサイクル調査で、日本市場は2018年10月までは「過度な期待のピーク期」にあったものの、その後幻滅期に入ったとする調査結果です。 しかし、幻滅期に入ったからといって、AIが一過性の流行であって消えていくわけではありません。ガートナー…
有名なディープラーニングの資格にJDLAのE資格があります。 本エントリーは、その対策メモで更新型のエントリーで(が果てしなく長くなると思うのでそのうち分割します)、順次埋めてゆきたいと思います。 試験範囲はJDLAの公式サイトを参照してください。 E資格とは - 一般社団法人日本ディープラーニング協会【公式】 線形代数 逆行列 固有値分解 固有値・固有ベクトル 対角行列と正則行列 numpyでの実装 特異値分解 共分散行列 微分積分 グラフと誤差逆伝播 数値解析 ニュートン法 確率分布 ベルヌーイ分布 マルチヌーイ分布 正規分布 情報理論 エントロピー・ダイバージェンス グラフィカルモデル …
お久しぶりです!EMです^^ 1月も半分が過ぎてしまいました。早いですね~。 私が住んでいるトロント市は現在ロックダウンしており その上今週から非常事態宣言も発表されて、ますますコロナの厳戒態勢が 強まっています。 ワクチンは2月頃からもう少し普及するみたいなので 今年中には収まってくれるといいですね。 さて暗い話はここまでにして本題です! 今回は他の人がどの様にして、機械学習エンジニアとして 実際どんな事をしているのか、海外の記事を参考にしながら 読み解いていきたいと思います。 国によってはエンジニアの仕事も様々だと思うので、日本やそれぞれの会社によっては 全く同じことがいえるかどうかは分か…
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装作者:斎藤 康毅発売日: 2016/09/24メディア: 単行本(ソフトカバー)今回はニューラルネットワークの基礎を説明していきます。 ニューラルネットワークとは 前回の記事でもふれたとおり、ニューラルネットワークはパーセプトロンの集合体、多層パーセプトロンと同義です。 ニューラルネットワークは大きく3つの層に分かれており、下図の通り「入力層」「中間層(隠れ層)」「出力層」で構成されます。このニューラルネットワークは複数の入力とそれに対する重みを積和演算し、次の層へ順に伝えていくということで、順伝播型ネッ…
仕事の幅を広げるために数字が読めるようにならないとならんな。 数字が読めない意識低い系プログラマの独白。 とりあえず数字を読めるようになるのが先決であろうな。 まとめ あわせてよみたい 仕事の幅を広げるために数字が読めるようにならないとならんな。 数字が読めない意識低い系プログラマの独白。 僕はまぁ、プログラマの仕事を生業としているのだけど、考え方が生まれつき文系の方らしく、数字が壊滅的に読めない。かつて学生だった頃も、数学と英語が壊滅的で倫理や現代文が得意だったという文系人間なのである。哲学的なものに興味を持って大学は心理学科に入った。だが、その頃流行り始めた2chにどっぷりと浸かってしまっ…
ストップワードとはあまりにも利用頻度が高い言葉であるために、処理対象外とする単語のことである。例えば助詞や助動詞など(が、の、です、ます)がそれに該当する。 どのような場面でストップワードの除去を行うかというと例えば形態素解析した結果を機械学習させて文章の意図を判定する場合、利用頻度が高いが意図の判定に利用できない単語は除去しておく方が精度を向上させることができる。 ストップワードの除去には様々な方法があるが今回のプログラムでは形態素解析の結果の品詞情報を利用して除去していく。 実行結果 名詞、動詞、形容詞の場合のみ出力することでストップワードを除去している。 parseToNode()メソッ…
仲間内で実施している学習理論勉強会の担当箇所の発表メモです. 本ブログのスタンス, 読むときの注意等は以下の本ブログaboutページをご覧ください. smbttimemo.hatenablog.com 概要 関連記事 6.1 Introduction (p.105-108) 次節予告 さいごに 概要 以下のFoundations of Machine Learning (FML) を教科書に, 仲間内で学習理論勉強会を実施しています. 本記事はその勉強会の発表ノートです. cs.nyu.edu 私の担当箇所であるChapter 6: Kernel Methodsの節立てを記載すると以下のように…
生徒10人にたいして、全く同じ問題を10回教えることになるので難しめの問題だとどこが難しく感じるのか、式変形で間違えがちな場所がどこかという情報は蓄積されていきます。 たとえば 全てのxでax^2+bx+c>0をみたすa, b, cの条件は? という問題があると5人に2人くらいは 判別式D>0 を解きます。 「なんでD>0やねん、どうせ不等式が >0だからやろ!勢いあまってD>0ってか!」 と突っ込みます。 この手の技術的なことは私がやらなくてもそれこそ機械学習できそうなものです。 一方で、勉強ができない以前に、心の闇を抱えていそうなケースもあります。 解いてみた感じというか生徒と接しているな…
米国でフリマアプリを展開しているポッシュマークがナスダックに上場しました。 ロイターによると、株価は一時130%も上昇したそうです。 となると、気になるのは、メルカリの米国事業。 かなり力を入れていて、米国での利用者も増加しているようですが、ライバル企業との競争が更に激化しそうです。 マーケットプレイス事業の参入障壁は何か?となると、やはり「圧倒的なアクティブユーザー数」ということになるのでしょうか? ユーザーはやはり、出品手数料が低くて、手間も少ないサービスを提供しているところに流れるのでしょう。 現在、メルカリに投資しているわけでもなく、ポッシュマークに投資する予定もないので、細かいサービ…
地元で3年半ぶりのバスケをして全身筋肉痛になったのと、ご時世的に母親の実家に帰れなかったこともあり、冬休みは読書に全振りをしていた。 冬休み中から冬休み明けにかけて読んだのは技術書8冊。 ちなみに全部紙。[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)作者:安井 真伸,横川 和哉,ひろせ まさあき,伊藤 直也,田中 慎司,勝見 祐己発売日: 2008/08/07メディア: 単行本(ソフトカバー)はてなの方々が書いたやつで、サンプルコードもPerlで親近感が湧いた。 スケーラビリティ、ハイパフォー…
前回書いたように、 紆余曲折を経てシステムエンジニアに就職したわけだけど、 社会人になってからの話を書く前に、大学4年の研究室時代の話を書こうと思う。 「ドラえもんを作る」目的で機械工学科を選んだ私は、 当初の目的通り、4年次には二足歩行ロボットの研究室に無事入った。研究室は研究テーマごとにチームに分かれていて、 私が興味があったのは、ドラえもんの四次元ポケットではなく、 「心」の部分、認知心理学やニューラルネットワークに関する部分だったので、 これを扱っていた福祉チームに入った。この研究室で過ごした1年の中で、 今の自分に繋がる大きな気づきが2つある。 気づき1)人間は好き嫌いがあるから、協…
今年の道具箱には、実用ツールしか入っていない。① lua → cyborg開発用② gawk → magic開発用③ python → fxma(fx maket analyzer)開発用 deepro(deep learning robot)開発用 ④ MQL → ea(fx robot)開発用 cyborg自分の中にメソッドを持ったロボットそのメソッドによって調整可能 magiceaの開発を容易にするツール fxmaeaのロジックを作るための相場分析ロボット deepro相場で勝つための機械学習をするAI-robot 興味が湧くプログラムがあったらコメントください。