2016年5月20日金曜日

C言語で学ぶ機械学習:『機械学習と深層学習』の要点(サンプルDL/電子版案内)

C言語だけで写経できる入門/処理手続きの理解に向く。深層の網羅性は限定的なので“実装で掴む”用途に最適

機械学習と深層学習 ―C言語によるシミュレーション


  • Q. サンプルコードはどこ?
    A. **オーム社公式の「ダウンロード」**にzip(約24KB)。本書購入者向け、著作権等の注意書きあり。 ohmsha.co.jp

  • Q. 正誤表はある?
    A. 公式記載「正誤表はございません」ohmsha.co.jp

  • Q. 電子版は?
    A. Amazon Kindle/達人出版会/BookWalkerなどで入手可(試し読みありのサイトも)。 Amazon Japan達人出版会電子書籍ストア | BOOK☆WALKER


  •  

     

    ・ソースコードはこちら



    2016年5月18日水曜日

    ブライアン・カーニハンが書いたgo言語本

    プログラミング言語Go

     

     


    PowerShell for Azure 邦訳

    PowerShell for Azure


    第1章 Azureのアーキテクチャ概要
    第2章 AzureではじめるPowerShell
    第3章 Azure Storageの管理
    第4章 ヴァーチャルマシンへの配備
    第5章 ヴァーチャルネットワークの設定
    第6章 Azure Web Appsの配備
    第7章 Azure SQL Database(の操作)
    第8章 Azure Automation(の操作)
    第9章 Azure RemoteApp(の操作)
    第10章 Azure Active Directoryの管理
    第11章 Azure RMS
    第12章 Azure HDInsight クラスタの構築管理

    『強くなるロボティック・ゲームプレイヤーの作り方』復刊|C++で学ぶ実践的強化学習[プレミアムブックス版]サンプルDL案内つき

    2008年刊の名著『強くなるロボティック・ゲームプレイヤーの作り方』がプレミアムブックス版として2016年に復刊。C++でロボット/ゲームAIに強化学習を実装する実践書です。著者は八谷大岳・杉山将。紙版・電子版あり、サンプルコードはマイナビのサポート/商品ページから入手できます(発売日:2016/06/08、ISBN:978-4-8399-5673-8)。

    強くなるロボティック・ゲームプレイヤーの作り方 プレミアムブックス版 ~実践で学ぶ強化学習~ 


    • C++によるロボット強化学習
    • サンプルソースのダウンロードはこちら

    追記:よくある質問(FAQ)

    Q. 復刊で内容は変わりましたか?
    A. 基本内容は2008年版と同一で、プレミアムブックスとして再刊されています。
    Q. 使用言語は? Pythonでも学べますか?
    A. 本書の実装はC++中心です。概念は他言語にも応用できますが、サンプルはC++です。
    Q. サンプルコードはどこで入手できますか?
    A. 出版社の商品/サポートページからダウンロードできます(販売サイトの案内を参照)。
    Q. 電子版(eBook)はありますか?
    A. あります。販売状況は各ストア(出版社サイト、Amazon等)でご確認ください。
    Q. どんな人に向いていますか?
    A. C++で強化学習を実装してみたい初中級者〜実務者、ロボット制御やゲームAIに関心のある方。
    Q. 具体的に何が学べますか?
    A. 強化学習の基礎からアルゴリズム、ロボット/ゲームエージェントへの実装手順までを通しで学べます。
    Q. 事前に必要な知識・環境は?
    A. C++の基礎、確率・線形代数・微積の初歩。標準的なC++コンパイラ/IDE(GCC/Clang/Visual Studio等)。
    Q. 価格や在庫は?
    A. 変動するため、最新情報は出版社ページや通販サイトでご確認ください。

    主要トピック(各1行)

    • MDP:状態・行動・遷移・報酬で問題を定式化する土台。

    • 動的計画法:モデル既知前提で価値・方策を反復更新して最適化。

    • モンテカルロ:エピソード平均で価値推定。モデル不要・高分散。

    • TD学習:1歩先の推定でブートストラップ更新。オンラインに向く。

    • SARSA:実行中の方策で更新するオンポリシー。安全寄り。

    • TD(λ):エリジビリティ痕跡で多段のTD誤差を混合。

    • Q学習:max行動で更新するオフポリシー。理論収束性が強い。

    • 近似(線形/カーネル):特徴表現で連続空間の価値関数を近似。

    • 政策勾配:方策を確率分布として直接最適化(REINFORCE等)。

    代表課題

    • 三目並べ:離散・完全情報で基礎検証に最適。

    • Mountain Car:連続状態で谷脱出。探索設計がカギ。

    • Acrobot:二重振子のスイングアップ。制御系の定番難題。

    2016年5月12日木曜日

    Apache NiF トラブルシューティングとあるある


    ・GetHTTPプロセサでSocketException Invalid Argumentエラー

    (おそらく)君の使ってるJavaのバージョンが古いからエラー
    java version "1.7.0_55"

    Java(TM) SE Runtime Environment (build 1.7.0_55-b13)

    http://stackoverflow.com/questions/16191236/tomcat-startup-fails-due-to-java-net-socketexception-invalid-argument-on-mac-o

    JDKをこっからダウンロードして
    java version "1.8.0_91"

    Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
    にしたら動きました。(>>そのせいで多分某ゲームが動かなくなるのでバージョン切り替えできるようにする)
    ******
    ・REST API呼び出せない

    Pathは/nifiじゃなくて/nifi-api
    > The API lives at /nifi-api, so the address you are looking for would 
    > be http://localhost:8080/nifi-api/controller/about
    
    
    httpsが必要なものがあるようで、とりあえず呼べたのはこれ
    http://localhost:8080/nifi-api/controller
    
    

    NiFiプロセサ紹介 ExecuteProcessとPutFile

    ExecuteProcess
    OSのシステムコマンドを実行して結果をFlowFileに出力する。
    処理が長くなりそうな場合はBatch Durationに時間を設定するとその時間間隔で出力を分けてくれるのでテキストの出力の場合は活用してもいいかもしれない。

    PutFile
    ローカルのファイルシステムにFlowFileを書き込む。
    DirectoryにFlowFileを書き込むディレクトリを設定する。

    sample1は上記二つのプロセサを組み合わせて/tmp/nifi_tempディレクトリにデータを出力するテンプレートファイル
    ExecuteProcessプロセサが"Hello"を引数としてEchoの実行を行い、PutFileプロセサがFlowFileの出力を行う。

    ※windowsでExecuteProcessを使用する場合は、commandをcmdとして引数に実際のコマンド( /c echo hello)などと打てば、動く
    **************
    ExecuteStreamCommand

    図にするとこんな感じかな


    やり方いろいろあるだろうがExecuteStreamCommandのCommand Pathにはシェルスクリプトやバッチファイルの場所を書いたほうが無難みたい。

    ***************
     GenerateFlowFile
     負荷テストなどの目的で利用できるランダムデータからなるFlowFileの生成が行える。
     File Size :生成したいファイルサイズ
     Data Format  :テキストかバイナリか選べる

    sample2ではGenerateFlowFileプロセサが10KBのランダムな文字列からなるテキストファイルを2秒ごとに生成し、PutFileプロセサがFlowFileの出力を行う。
    *************
    GetHTTP
    指定したURLに対してGETリクエストをかけて、取得したボディを指定した名前のFlowFileにする。

    sample3ではHTTPGetプロセサがhttp://localhost:8080/nifiを呼び出し、結果をtest3.txtというファイルに保存する。念のためSchedule Durationを十日後に設定している。PutFileプロセサがFlowFileの出力を行う。
    (SDKのバージョンによってエラーが出る場合があるため注意せよ)
    *******

    2016年5月11日水曜日

    Apache NiFi ドキュメントリンク(最新版への導線+2.x対応メモ)


    ドキュメント構成はこちら

    Getting Started with Apache NiFi は初めてNiFiを使う人向けの「とりあえず動くの確認」用のチュートリアル
    Apache NiFi User Guide はUIの操作を中心にNiFiでユーザーができることをガイド
    Apache NiFi Expression Language Guide は属性値の判定や書き換えに使えるスクリプト言語の仕様書
     The NiFi Expression Language で属性値の参照したり別の値と比較したり加工したりできます。

    NiFi System Administrator’s Guide はユーザーの管理を含むシステム管理者向けの技術資料
    /nifi-api はNiFiをリモート操作できるRest APIの仕様
    NiFi Developer’s Guide はProcessorを中心としたNiFiのコンポーネント開発のための解説書
    Apache NiFi Development Quickstart はNiFi本体を開発したい人のためのクイックガイド
    Example Dataflow Templates はデータフローのサンプルをtemplate形式でお送りしている

    For Developers は開発者向けの情報(アーキテクチャーやバージョンルールなど)

    hortonworks-gallery/nifi-templates はhortonworksによるtemplate集

    Indexing Tweets with NiFi and Solr NiFiでツイッターから情報とるサンプル

    ***************
    プロセサの設定について
    ・プロセサは指定されたスケジュールにしたがって実行される。選べるのは
    Timer driven: ‘Run duration.’の間隔にしたがって実行
    Event driven:イベントドリブンで仮実装中(一部のプロセサで実行可能)
    CRON driven:CRONの仕組みにしたがる。
    の三種類

    追記:NiFi 2.x の重要メモ(旧記事からの補足)

    • Event-driven スケジューリングは 2.0 で削除
      1.x では一部プロセサで実験的に提供されていましたが、2.0 で除去されました。今後は Timer-driven または CRON-driven を利用します。Apache IssuesCloudera Documentation

    • XML テンプレートは廃止 → フロー定義(JSON)+レジストリ(NiFi Registry / GitHub/GitLab クライアント)
      既存テンプレートはフロー定義へエクスポートし、レジストリでバージョン管理に移行します。MediumCloudera DocumentationStackable Documentation