タグ

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

  • 「ITエンジニアのための強化学習理論入門」が発売されます - めもめも

    www.amazon.co.jp 表題の書籍が技術評論社より発売されることになりました。執筆にご協力いただいた方々には、あらためてお礼を申し上げます。販売開始に先立って、「はじめに」「目次」「図表サンプル」を掲載させていただきますので、先行予約される方の参考にしていただければと思います。 はじめに 「Q LearningとSARSAの違いを説明してください。」皆さんは、この質問に即答できるでしょうか? 書を読めば、自信を持って答えられます! —— と、謎の宣伝文句(?)から始まりましたが、少しばかり背景を説明しておきましょう。 2015年に『ITエンジニアのための機械学習理論入門』(技術評論社)を出版させていただいた後、驚くほどの勢いで機械学習の入門書が書店にあふれるようになりました。そしてまた、回帰モデルによる数値予測、分類モデルによる画像データの識別など、教師データを用いた機械学習

    「ITエンジニアのための強化学習理論入門」が発売されます - めもめも
  • 「技術者のための確率統計学」が出版されます - めもめも

    www.shoeisha.co.jp 表題の書籍が翔泳社より出版されることになりました。査読に参加いただいた読者の方を含め、編集・校正・組版・イラストデザインなどなど、書の作成に関わっていただいたすべての方々に改めてお礼を申し上げます。 これでついに(!)「技術者のための基礎解析学」「技術者のための線形代数学」とあわせた三部作が完成となりました。 「昔勉強した気がするけど、もうすっかり忘れちゃった」「あのカタイ数学の世界をもう一度、真面目に振り返りたい」―― そんな読者を想定したこれらの書籍を執筆するきっかけは、やはり昨今の「機械学習ブーム」でした。2015年に出版させていただいた「ITエンジニアのための機械学習理論入門」では、細かな数式を含む計算は、すべて「数学徒の小部屋」と題したコラム枠に押し込めていたのですが、その後、読者の方から「ここに書かれている数式を理解したくて、もう一度、数

    「技術者のための確率統計学」が出版されます - めもめも
  • 機械学習におけるカーネル法について - めもめも

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

    機械学習におけるカーネル法について - めもめも
  • PRML Figure 5.21 を再現するコード - めもめも

    何の話かというと A Neural Representation of Sketch Drawings でスケッチの次のストロークを予測するモデルとして、混合ガウス分布が使われており、ガウス分布の混合係数、平均、分散を Latent Variable z を入力とする RNN で計算するという手法が用いられています。 上図のデコーダ部分の出力 y が混合係数、平均、分散にあたります。その後、この分布から次のストロークのサンプルを取得することで、非決定的に画像を生成します。 このモデルは、Bishop先生のMixture Density Networksが元ネタになっており、PRMLにも解説があります。そこで、勉強のためにPRMLで紹介されているサンプルをTensorFlowで実装してみました。 モデルの説明 座標 x に依存して、平均と分散が変化する正規分布 を3つ混合したモデルを考えます

    PRML Figure 5.21 を再現するコード - めもめも
  • 分散学習用TensorFlowコードの書き方 - めもめも

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

    分散学習用TensorFlowコードの書き方 - めもめも
  • 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演習環境の準備手順 - めもめも
  • (日本語版) Cloud ML Super Quick Tour - めもめも

    cloud.google.com 何の話かというと 先日、Google Cloud MLがベータ公開されました。超ざっくりまとめると、GCPのクラウド上で次のことができるようになります。 (1) TensorFlowのコードを実行して学習済みモデルを作成する (2) 学習済みモデルをAPIサービスとして公開する(現在はアルファ版) (1)については、ハイパーパラメーターの自動チューニングや分散学習処理なども利用できるのですが、ここでは、単純に、既存のTensorFlowのコードをCloud MLに載せるための最低限の手順を説明します。 例として、下記のサンプルコードを使用します。全結合層のみの単層ニューラルネットワークでMNISTデータセットを分類する簡単な例です。 ・MNIST single layer network.ipynb ローカルで実行する場合からの修正点 まず、コードの実行に

    (日本語版) Cloud ML Super Quick Tour - めもめも
  • OpenStackユーザーのためのGoogle Cloud Platform入門(パート1) - めもめも

    前置き これは、GCPの公式文書ではありません。公式ドキュメントについては、公式ホームページを参照ください。 ・Google Cloud Platform 実際に試してみたい方は、60日の無料トライアルをお試しください。(クレジットカードの登録が必要ですが、トライアル終了後は明示的に課金設定を行わない限り、勝手に課金されることはありませんので、ご安心ください。) cloud.google.com GCPGoogle Cloud Platform)の基的な整理 GCPは、Googleが提供する(Google Appsとして提供するSaaS製品を除く)クラウドサービスの総称で、「コンピュート」「ストレージ」「ビッグデータ」などのカテゴリー別にサービスが提供されています。たとえば、「コンピュート」と「ストレージ」のカテゴリには、次のようなサービスがあります。 コンピュート サービス 説明 A

  • Literate Automation(文芸的自動化)についての考察 - めもめも

    何の話かというと Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Notebookの適用 from No Bu www.slideshare.net 上の資料で解説されている "Literate Computing for Reproducible Infrastructure" という取り組みを進めているチームの方と一緒に仕事をさせていただく機会があり、この取り組みの「心」を聞かせていただいたのですが、むしろこれは、「Literate Automation(文芸的自動化)」と呼んだ方がしっくりくる気がして、ちょっと、私なりの観点でまとめてみました。 Ansibleの悩み所 Ansibleで運用オペレーションをPlaybook化して自動化するという動きが広がっていますが、実運用で格的に使っ

    Literate Automation(文芸的自動化)についての考察 - めもめも
  • TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その2) - めもめも

    何の話かというと enakai00.hatenablog.com 上記の記事では、隠れUnitが2個という、世界で最もシンプルなニューラルネットワークを構成しました。 これをちょこっとだけ、拡張して遊んでみます。 隠れUnitを増やす それぞれの隠れUnitは平面を直線で分割するわけですので、隠れUnitを増やせば分割線がどんどん増やせます。 前回のコードでは、下記の部分で隠れUnitの個数を指定していたので、これを変えてためしてみます。ここでは、4個にしてみます。 hidden1_units = 4 はい。予想通り、境界線がより複雑になりました。隠れUnitの数をどんどん増やすことで、どれほど複雑な関数でも表現できてしまいます。 ちなみに、上図の左側では、確率0.5を境界にして○と✕の領域を単純に分割していますが、右側を見ると、○と✕が混在した領域では、きちんと中間的な確率になっているこ

    TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その2) - めもめも
  • 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サーバー構成手順 - めもめも
  • RHEL7におけるDockerのディスクイメージ管理方式 - めもめも

    変更履歴 2014/04/20 公開 2014/04/27 構成情報ファイルの説明追加 2014/06/15 dm-thinprovisiongのデバイスメタデータファイル変更 背景 先だって、「Linuxコンテナ(LXC)の基礎をまとめ直す」というコラムに、「来るべきDockerの波に向けて、まずは、コンテナの基礎を理解しましょう!」的な話を書きました。この中で、比較的に原始的なコンテナ利用法として、「RHEL6.2のlibvirtからLinuxコンテナを利用」という記事を紹介しています。 この記事では、busyboxを使った簡易httpサーバのコンテナを起動していますが、この手順に従うと(気づく人は)容易に気づくのが、コンテナに見せるファイルシステムの準備がいかに面倒か、という事実です。コンテナから見えるルートファイルシステムは、基的には、ホスト上の特定のディレクトリにchrootし

    RHEL7におけるDockerのディスクイメージ管理方式 - めもめも
  • /proc/meminfoを考える - めもめも

    通りすがりの貴方・・・・ /proc/meminfoのあっちの値とこっちの値を足したら、なんでそっちの値と同じにならないの・・・・ と悩んだことありますよね? /proc/meminfoは、カーネルが内部的に管理している枠組みでのメモリ情報をそのまま出しているので、残念ながらユーザ視点で知りたいメモリ情報とは一致しません。 とはいえ、変な解釈をして無意味に悩まないために、それぞれの値の意味合いと項目間の関係を知っておくのは有意義です。私の理解の範囲で、それらの関係をまとめていきます。 #私の理解も完璧ではないので、間違いあればやさしくご指摘お願いします。 参考資料 http://mkosaki.blog46.fc2.com/blog-entry-1007.html 2011/09/07 追記: tmpfsがSwapCachedに含まれるのは幻想でした。tmpfs=Shmemに修正しました。

    /proc/meminfoを考える - めもめも
  • nmcliで仮想ブリッジ作成 - めもめも

    むかーし、RHEL6の時代にNetworkManagerだと仮想ブリッジの作成ができないので、KVMホストとして使うときは、NetworkManagerは止めましょうとか書きました。。。。若かったです。 RHEL7/CentOS7は、NetworkManager必須なので、そんな事は言ってられません。ちゃんと、nmcliで仮想ブリッジも作成できるようになっています。 まず、仮想ブリッジbr0を作って、STPをOffにして、IPアドレスをセットします。 # nmcli con add type bridge ifname br0 # nmcli con modify bridge-br0 bridge.stp no # nmcli con modify bridge-br0 ipv4.method manual ipv4.address "192.168.199.100/24" ipv4.g

    nmcliで仮想ブリッジ作成 - めもめも
  • RHEL7/CentOS7を満喫するための情報まとめ - めもめも

    全般 ・Red Hat Enterprise Linux 7がやってきた ・Red Hat Enterprise Linux 7が超わかる(日経BP Next ICT選書) systemd ・Software Design 2015年2月号 第1特集 Linux systemd入門 あなたの知らない実践技 ・systemd徹底入門 ・RHEL7/CentOS7のjournaldについてのもろもろ Network ・RHEL7/CentOS7 NetworkManager徹底入門 ・RHEL7/CentOS7でipコマンドをマスター ・NetworkManagerの設定変更、nmtuiとnmcliについてまとめたよ! ・nmcliで仮想ブリッジ作成 ・RHEL7のNICのネーミングルール ・firewalld徹底入門! Docker ・"Docker is NOT Container."

    RHEL7/CentOS7を満喫するための情報まとめ - めもめも
  • 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についてのもろもろ - めもめも
  • Dockerコンテナー内のbashからアプリケーション停止処理を実施するTIPS - めもめも

    Dockerのコンテナーでアプリケーションを起動する場合、専用の起動スクリプトからアプリケーションを起動して、最後に(後からdocker attachできるように)bashを起動しておくことがあります。 次は、httpdサービスを起動するコンテナーを作成する簡単なDockerfileですが、コンテナー起動時にスクリプト「init.sh」を実行するようにしています。 Dockerfile FROM centos:centos6 MAINTAINER enakai RUN yum -y install httpd ADD src /var/www/html RUN chmod -R 644 /var/www/html/* ADD init.sh /usr/local/bin/init.sh RUN chmod u+x /usr/local/bin/init.sh CMD ["/usr/loca

    Dockerコンテナー内のbashからアプリケーション停止処理を実施するTIPS - めもめも
  • Dockerイメージのレイヤー構造について - めもめも

    何の話かというと Dockerイメージは複数のレイヤーが重なった形になっています。このあたりを内部構造とあわせて解説します。前提の環境は、CentOS7です。(つまり、ローカルのイメージ管理は、dm-thinが前提。) # rpm -q docker docker-0.11.1-22.el7.centos.x86_64 ローカルにイメージをpullする時の動作 まず、ローカルのイメージをすべて消してキレイな体にしておきます。 # systemctl stop docker.service # rm -rf /var/lib/docker/* # systemctl start docker.serviceCentOSの公式イメージをpullします。この時、4つのイメージ(b1bd49907d55、b157b77b1a65、511136ea3c5a、34e94e67e63a)がダウンロードさ

    Dockerイメージのレイヤー構造について - めもめも
  • RHEL7のNICのネーミングルール - めもめも

    参考資料 ・Predictable Network Interface Names 何の話かというと RHEL7では、NICのネーミングルールが変わっています。RHEL6では、DELL製のハードウェアの場合だけネーミングルールが変わるという謎のudevルール(biosdevname)がありましたが、RHEL7では、さらにまた仕組みが変わって、systemdがNICのネーミングを行うようになりました。 まとめると次のようになります。 バージョン ハードウェア ネーミングルール RHEL5 すべて 古典的な「eth0」「eth1」など RHEL6 一般のマシン 古典的な「eth0」「eth1」など RHEL6 DELL製のハードウェア biosdevnameによる「em1」「em2」「p1p1」など RHEL7 一般のマシン Predictable Network Interface Name

    RHEL7のNICのネーミングルール - めもめも
  • RHEL7/CentOS7でipコマンドをマスター - めもめも

    何の話かというと RHEL7/CentOS7では最小構成でインストールすると、ifconfig、route、netstat、arpなどのネットワーク関連のコマンドが使えません。これは、次のコマンドで「net-tools」パッケージを導入すると解決します。 # yum -y install net-tools しかしながら! RHEL7/CentOS7では、net-toolsを「deprecated(廃止予定)」としており、今後は、iproute2パッケージに含まれる「ip」「ss」などのコマンドを使用することが推奨されています。 ・お客さんのRHEL7サーバーのメンテを頼まれたらnet-toolsが入ってなかった! ・「えー。まだifconfigつかってんのー。」と若い同僚に冷たい目で見られた! ・などなど といった事態に備えて、RHEL7/CentOS7を導入した際には、iproute2

    RHEL7/CentOS7でipコマンドをマスター - めもめも