タグ

ブックマーク / enakai00.hatenablog.com (33)

  • 機械学習におけるカーネル法について - めもめも

    何の話かというと 機械学習におけるカーネル法の説明で、よく登場するのがこちらの図です。 左側の (x, y) 平面上の点を分類する場合、このままだと線形分類器(直線で分類するアルゴリズム)ではうまく分類できないのが、右図のように z 軸を追加してデータを変形すると、平面できれいに分割できるようになって、線形分類器による分類がうまくいくというものです。このように、高次元空間にデータを埋め込むことでうまいこと分類するのがカーネル法の仕組みだというわけです。 なのですが・・・・・・・・・・・・・・・・・・・・ これ、当にカーネル法の原理を知っている方には、ちょっと気持ち悪くないですか? ※ 以下はカーネル法を知っている方向けのつぶやきです。 上記の例は、データの配置にあわせて、うまいこと z 軸方向の変形をしているのでうまくいっているのですが、カーネル法には、データの配置にあわせてうまいこと変

    機械学習におけるカーネル法について - めもめも
  • 分散学習用TensorFlowコードの書き方 - めもめも

    何の話かというと Google Cloud MLを利用して、TensorFlowの分散学習を行う方法です。取り急ぎ、自分用のメモとして公開しておきます。 分散学習にはいくつかのパターンがありますが、最もシンプルな「データ分散」の場合を説明します。各ノードは同じモデルに対して、個別に学習データを適用して、Variableを修正する勾配ベクトルを計算します。それぞれで計算した勾配ベクトルを用いて、共通のVariableを修正していきます。 前提知識 TensorFlowの分散学習処理を行う際は、3種類のノードを使用します。 ・Parameter Server:Workerが計算した勾配ベクトルを用いて、Variableのアップデートを行います。 ・Worker:教師データから勾配ベクトルを計算します。 ・Master:Workerと同様の処理に加えて、学習済みモデルの保存やテストセットに対する

    分散学習用TensorFlowコードの書き方 - めもめも
  • Jupyterノートブック上でJavaScriptからカーネルのコードを実行する方法 - めもめも

    qiita.com これは、jupyter notebook Advent Calendar 2016の10日目の記事です。 何の話かというと IPython.displayモジュールのHTML関数を使うと、次のように、Jupyterノートブック上でJavaScriptを実行することができます。 from IPython.display import HTML javascript = ''' <script type="text/javascript"> alert("HOGE") </script> ''' HTML(javascript) # ポップアップウィンドウを表示 この時さらに、JavaScriptからノートブックを実行中のカーネルを呼び出して、任意のコードを実行することが可能です。また、JavaScript側でコードの実行結果を受け取ることもできます。具体的には、次のように

    Jupyterノートブック上でJavaScriptからカーネルのコードを実行する方法 - めもめも
  • Jupyter演習環境の準備手順 - めもめも

    この手順では、メモリが4GB以上、CPUが4コア以上の環境を前提としています。 macOSを使用する場合 macOS用のDockerが対応しているのは、Yosemite以降のバージョンです。ここで紹介する手順は、El Captitanで動作確認をしています。 はじめに、Dockerの公式Webサイトから、macOS用のDockerをダウンロードします。「Getting Started with Docker」のリンクからダウンロードページを開いて、「Download Docker for Mac」をクリックすると、インストーラーファイル Docker.dmgがダウンロードできます。インストーラーを開いて、DockerアイコンをApplicationsフォルダーにコピーした後、ApplicationsフォルダーからDockerを起動します。初回の起動時は、インストール処理のポップアップが表示

    Jupyter演習環境の準備手順 - めもめも
  • Jupyterで高校物理のアニメーション - めもめも

    何の話かというと JupyterでGIFアニメが作成できるようにしたので、高校物理で出てきそうな動画を作成してみました。 Jupyterが動作するDockerイメージを用意してあるので、環境準備は、CentOS7なら下記の手順でOKです。 # yum -y install docker # systemctl enable docker.service # systemctl start docker.service # mkdir ~/data # chcon -Rt svirt_sandbox_file_t ~/data # docker run -itd --name jupyter -p 8888:8888 -v ~/data:/root/notebook -e PASSWORD=hogehoge enakai00/jupyter_tensorflow:latest下記はサンプルコ

    Jupyterで高校物理のアニメーション - めもめも
  • Kernel PCA (Principal Component Analysis) の導出 - めもめも

    何の話かというと Python Machine Learning: Unlock deeper insights into Machine Leaning with this vital guide to cutting-edge predictive analytics (English Edition) 作者:Raschka, SebastianPackt PublishingAmazon こののKernel PCAの説明が相当に計算を端折っていて、これは読者もつらいだろぅ。。。と思って途中の計算を端折らずになるべく正確に導出してみました。 ※実対称行列の固有値分解とLagrangeの未定乗数法は前提知識とします。 普通のPCA はじめに、Kernelを使わない普通のPCAを導出します。 データセット の分散共分散行列を とします。この時、 は正定値の実対称行列より、正(もしくは0)

    Kernel PCA (Principal Component Analysis) の導出 - めもめも
  • RHEL7/CentOS7のjournaldについてのもろもろ - めもめも

    journaldとは? systemdの環境で、標準的に提供されるログ管理のサービスです。正式名称は、下記の「systemd-journald.service」です。 # systemctl status systemd-journald.service systemd-journald.service - Journal Service Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static) Active: active (running) since 月 2014-11-24 16:27:08 JST; 5 days ago Docs: man:systemd-journald.service(8) man:journald.conf(5) Main PID: 334 (systemd-jour

    RHEL7/CentOS7のjournaldについてのもろもろ - めもめも
  • 倒立振子でDQNにおけるモデルの複雑さと学習内容の関係をちらっと確かめてみた系の話 - めもめも

    何の話かというと qiita.com 上記の記事では、「倒立振子」を題材にした、DQN(Deep Q Network)による強化学習の解説があり、非常によくまとまっています。 一方、この記事の中では、全結合層を4層に重ねたネットワークを利用しているのですが、倒立振子の問題に限定すれば、もっとシンプルなネットワークでも対応できる気がしなくもありません。 というわけで、「0層(パーセプトロン)」「1層」「2層」のネットワークでどこまで学習できるのか、モデルの複雑さと学習内容の関係を確認してみたよー、というのがこのブログのネタになります。 DQNとは? まずは簡単にDQNを解説しておきます。 ビデオゲームの自動プレイで有名になりましたが、「与えられた環境において、最善の行動を選択する」という処理を実現することが目標です。ここで言う「行動」は、ビデオゲームの操作のように、「どのボタンを押すのか」と

  • JupyterでTensorFlowが使えるDockerイメージ - めもめも

    Jupyterとは? まず、Jupyterの紹介をすると、これは、Python(IPython)による対話的なデータ分析処理をWebブラウザ上の「ノートブック」で実施するツールです。下記のように、Markdownで記述した文章とコード、そして、その実行結果が記録されていきます。 作成したノートブックは、JSON形式でエクスポートしてGitHubで共有することができます。GitHubのWebサイトでは、自動的にノートブック形式にレンダリングして表示されるようになっています。現在は、Tex形式の数式がうまく表示されない問題があるようですが、下記のような感じになります。 ・ロジスティック回帰による二項分類器の作成 また、受け取ったノートブックは、自由にコードを修正して再実行することができますので、データ分析のコードとその説明をノートブックにまとめておけば、「実行できる教科書」が実現することになり

    JupyterでTensorFlowが使えるDockerイメージ - めもめも
  • Jupyter Notebook版「ITエンジニアのための機械学習理論入門」サンプルスクリプト - めもめも

    ITエンジニアのための機械学習理論入門 作者: 中井悦司出版社/メーカー: 技術評論社発売日: 2015/10/17メディア: 単行(ソフトカバー)この商品を含むブログ (1件) を見る こちらの書籍のサンプルスクリプトをJupyter Notebookで書きなおしたものをGitHubで公開しました。 下記のリポジトリから入手可能です。 github.com GitHubのWebサイトで各ノートブックファイルを内容を見ることができます。これをJupyter環境にアップロードすると、実際にコードを実行することが可能になります。 これらのノートブックを実行可能なJupyter環境は、下記の記事で紹介しているDockerイメージから起動することができます。 enakai00.hatenablog.com Linux環境であれば、下記の手順で、ノートブックファイルを取得して、それを参照するための

    Jupyter Notebook版「ITエンジニアのための機械学習理論入門」サンプルスクリプト - めもめも
  • PRML6.4.2 Gaussian processes for regressionのメモ - めもめも

    基底を固定した場合の計算量 一般には、N✕N行例の逆行列計算が必要になるところが、有限個の基底を固定するとM✕M行列の逆行列計算に計算量が減少する理由を具体的な計算で確認。 Figure 6.10を再現するコード わかりやすさ優先で冗長なコードにしてあります。 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from numpy.random import normal np.random.seed(20160317) num_data = 100 iter_num = 50 rate = 0.005 beta = 36.0 t0 = 1.0 eta1, eta2, eta3 = 1.0, 1.0, 1.0 def prep_data(): x1 = normal(0.0, 0.5, nu

    PRML6.4.2 Gaussian processes for regressionのメモ - めもめも
  • PRML Figure6.5を再現するコード - めもめも

    これです。 import numpy as np import matplotlib.pyplot as plt from numpy.random import multivariate_normal params = [(1,4,0,0), (9,4,0,0), (1,64,0,0), (1,0.25,0,0), (1,4,10,0), (1,4,0,5)] fig = plt.figure() for n in range(len(params)): (p0, p1, p2, p3) = params[n] linex = np.linspace(-1,1,999) kern = np.zeros([len(linex),len(linex)]) for i, x0 in enumerate(linex): for j, x1 in enumerate(linex): kern[i]

    PRML Figure6.5を再現するコード - めもめも
  • 「TensorFlow Tutorialの数学的背景」シリーズの目次 - めもめも

    TensorFlowを使って、実際にコードを動かしながら、DeepLearningの仕組みを段階的に学んでいきましょう。 目次 ・No.1 TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) 平面上の2種類のデータをロジスティック回帰で直線的に分類するという、機械学習の基礎を説明します。 ・No.2 TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その2) 線形多項分類器とソフトマックス関数で、3種類以上のデータを分類する方法を説明します。 ・No.3 TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その1) No.1で説明した問題に対して、もっとも単純なニューラルネットワークを適用して、複雑な境界を持つ分類を実現します

    「TensorFlow Tutorialの数学的背景」シリーズの目次 - めもめも
  • TensorFlow Tutorialの数学的背景 − Deep MNIST for Experts(その1) - めもめも

    何の話かというと enakai00.hatenablog.com 上記の記事では、与えられたデータをそのまま分類するのではなく、分類に適した「特徴」を抽出した後、その特徴を表す変数(特徴変数)に対して分類処理をほどこすという考え方を紹介しました。今回は、とくに「畳み込み演算」によって、画像の特徴を抽出する方法を解説します。これは、Deep MNIST for Experts で紹介されているCNN(畳み込みニューラルネットワーク)による画像認識の基礎となります。 畳み込み演算とは? (参考資料)コンボリューションを用いた画像の平滑化、鮮鋭化とエッジ検出 はじめに、畳み込み演算を簡単に説明しておきます。簡単な例として、画像処理ソフトウェアで、画像を「ぼかす」フィルターをかける場合を考えます。これは、画像の各ピクセルにおいて、その部分の色をその周りのピクセルの色とまぜて平均化した色に置き換えれ

  • TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) - めもめも

    何の話かというと TensorFlow Tutorialの最初に登場する「MNIST For ML Beginners」では、次の方針で手書き文字の分類器を作成しています。(今の段階では、下記が何を言ってるのか分からなくても大丈夫です。) ・28x28ピクセルの手書き文字画像を各ピクセルの濃度を並べた784次元ベクトルと見なす。 ・784次元ベクトル空間を10箇所に分類する線形の多項分類器を用意する。 ・多項分類器の出力値をsoftmax関数に入れて、784次元空間の各点について、「0」〜「9」のそれぞれの文字である確率を定義する。 ・上記の定義の下で、トレーニングセットが得られる確率を最大にするよう、線形多項分類器のパラメーターを調整する。 これが一体何を言ってるのか・・・ということを数学的に理解していただくことが目標です。今回は、下準備として、より単純化したデータで上記と同じ処理を実装

    TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) - めもめも
  • UEFI対応のKickstartサーバー構成手順 - めもめも

    何の話かというと PXEブートと連携してRHEL/CentOSをネットワークインストールするKickstartサーバーは、古くから使われてきましたが、UEFI対応のサーバーをPXEブートするには、少し特別な設定が必要となります。BIOSブート用に構成したKickstartサーバーをUEFIブートに対応させるための追加手順を解説します。 前提環境 RHEL7のKickstartサーバーで、BIOSブートのサーバーに対して、RHEL6.7、および、RHEL7.2をインストールできるようにセットアップしてあるものとします。設定手順は、ざっと次の通りです。 必要なパッケージを導入して、ブートストラップイメージpxelinux.0をTFTPで取得できる場所にコピーします。その他、必要なディレクトリーを作成します。 # yum -y install tftp-server dhcp httpd sys

    UEFI対応のKickstartサーバー構成手順 - めもめも
  • Ising Modelを平易に解説してみる - めもめも

    Ising Modelとは? Ising Model(イジングモデル)とは、結晶を構成する原子の「スピン」の向きを計算する簡易的なモデルです。下図のように2次元の平面上に原子が整然と並んだ、架空の「結晶」を考えます。(物の結晶は3次元にならんでいますが、話を簡単にするために2次元にさせてください。) 図の上では、それぞれの原子はピタッっと静止していますが、みなさんご存知のように、実際の原子はその場でプルプル震えています。温度が高いと激しくプルプルしていて、温度が下がるとプルプルはおさまっていき、絶対零度(−273.15 ℃)になると完全に静止します。(ちなみに、高温の金属をさわると「あちっ!」となりますが、これは、微視的には、激しくプルプルする原子が手の表面の神経を刺激するためにおきると考えられます。) ここでさらに、それぞれの原子は「スピン」を持っているものとします。スピンと言っても原

    Ising Modelを平易に解説してみる - めもめも
  • OpenStack&Dockerを操作するデモでAnsibleの本質を考えてみる - めもめも

    何の話かと言うと OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック from Etsuji Nakai www.slideshare.net 上記のセミナーで、OpenStackとDockerを組み合わせた活用方法を紹介して、例として下記のような環境を構築しました。 MySQLとEtherpad-Lite(nods.jsのアプリ)を別々のVMインスタンス上にコンテナでデプロイして、連携動作させるという環境です。 そして、このセッションの後、さいとうさんが、この環境構築をAnsibleで自動化するデモを実施してくれました。 Okinawa Open Days 2015 Handson - Ansible from Hideki Saito www.slideshare.net このデモの内容をベースにして、Ansibleで複数の処理を自動化する際のプ

    OpenStack&Dockerを操作するデモでAnsibleの本質を考えてみる - めもめも
  • quickrdoでRDO/Libertyのお手軽オールインワン構成 - めもめも

    何の話かというと 恒例の「quickrdoでRDOのオールインワンデモ構成を作ろう!」ネタです。最新のLibertyに対応しました。 全体構成 「なんでNICが2個いるんだよ」と恒例のツッコミをいただきそうですが、あえて2個にわけています。(手順を間違ってうまくいかなかった時の対応方法の説明が面倒なので・・・)必要であれば、USB接続のイーサネットアダプターなどを利用してください。 また、IPアドレスは環境に応じて読み替えてください。「IPプール」は、仮想ルーターの外部ポートやフローティングIPなどで使用するIPアドレスです。ホストOSにはCentOS7を使用しますので、NICのデバイス名は「eno0」や「enp5s9」などになりますが、ここでは簡単のために「eth0」「eth1」としています。 ホストOSの準備 CentOS7を最小構成でインストールして、「eth0」「eth1」のネット

    quickrdoでRDO/Libertyのお手軽オールインワン構成 - めもめも
  • Quantumソースコード拾い読み(即値かよ!) - めもめも

    これは何かというと Open Stack Advent Calendarのエントリ(12/06)です。季節物(?)ということで、若干、おふざけ感のある内容については、ご容赦ください。 話のネタは、Red Hat版のRHEL6用Folsomで、Quantumを動かそうとがんばった際に、やむにやまれず読んだソースコードの思い出です。 (参考)QuickStart with RHOS(Red Hat OpenStack) Folsom Preview netns未対応 orz Quantumの機能(?)の1つに「Network Namespace(以下netns)対応」があります。netns自体は、もともとLXC(コンテナ)で使うために追加された(はずの)Linuxの機能で、プロセスごとに独立したネットワーク設定が持てるというものです。Quantumでは、これを利用して、「Overlapping

    Quantumソースコード拾い読み(即値かよ!) - めもめも