サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 17
qiita.com/mokemokechicken
はじめに GitHub ActionsでDockerのコンテナをBuildするとデフォルトだとLayerのCache?がされないため、毎回Dockerfileの先頭から実行することになります(何も工夫をしないと)。 「LocalでBuildするときは(Cacheが効いて)速いんだけど、GitHub Actionsだと遅い」というのは、Buildに時間がかかる場合結構しんどいです(Twitterなどが捗ってしまう)。 色々方法があるようですが、Dockerのマルチステージビルドを使っていないなら、割と簡単にCacheを効かせられるようなので、そのメモです(主に自分用)。 Docker BuildでCacheを効かせる方法 ポイントは docker buildコマンドの --cache-from と --build-arg BUILDKIT_INLINE_CACHE=1 になります。また、この
はじめに 将棋は大好きで最近はOnline中継も増えてきて良い時代になったものです。また、難解な局面でも将棋AIがどういう形勢かを教えてくれるのも素人が見ていて楽しめるようになった要因の一つだと思います。 数年前にMacの将棋AI環境をなんとか整えたのですが、今日ちょっと調べていたらとても簡単にできるようになっていたので、共有します。 結論からいうと 「将棋GUI」と「GUIが使う将棋思考Engine」が必要になりますが、 将棋所Mac を GUIにして、 思考Engineにこの記事 にあるように技巧2をhomebrewでInstallする が、そこそこ簡単な方法だと思います。 もう少し詳しく 将棋所Mac 将棋所Mac は名前の通り、「将棋所」のMac版でとても軽快に(今のところ)不具合もない感じです。以前は、「将棋ぶらうざQ」を使っていたのですが、ちょいちょい落ちたりすることもあったり
はじめに 前回はGraphNetを使って「とにかく5を出力する」ように学習しました。今回は、ノードやエッジの値を足し算する学習をしてみようと思います。 環境などは前回と同じです。 足し算を学習する 今回は、下の図のようなグラフを作って、全部のノードやエッジの値を足し合わせるように学習できるかやってみます。 コード import numpy as np import sonnet as snt import graph_nets as gn import tensorflow as tf import matplotlib.pyplot as plt from pprint import pprint %matplotlib inline tf.reset_default_graph() def create_data_dict(n0=0., n1=0., e0=0., e1=0.): da
はじめに GraphNets というライブラリが DeepMind からリリースされています。 このライブラリは この論文 の実装として公開されたもので、 端的に言うと 「ノード、エッジ、Globalに任意の属性(≒任意のtensor)を持ったグラフを入力にし、 構造は同じだが属性が更新されたグラフ を出力する」 というネットワークブロックを提供するものです。 何が面白そうかというと、グラフという知識表現として非常に表現力の高いデータ構造を扱うことができるということです。 以前から、グラフ畳み込みニューラルネットワークというものが(やや)注目されていましたが、それの汎用的なデータフォーマットを定めて、扱いやすくしてくれたような位置づけだと思います。 とはいうものの、現状ほとんどドキュメントも無く、デモのソースコードを見ても中々使い方がわかりません。 試行錯誤の末、なんとか GraphNet
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
はじめに タイトルの通り、Pythonの機械学習プロジェクトにおけるプログラミング設計について、 最近私が意識していることを書いてみたいと思います。 この内容が役に立つかもしれない人は、機械学習のプログラミングをする人で、 あまりPythonを書いたことが無い 仕事でプログラミングしたことがあまりない いつもプログラムの構成で悩んで、スッキリ書けないことが多い という人です。 設計方針 設計は「何に備えるか」を考える事に近いと思います。 通常私が機械学習プロジェクトで意識しているのは以下のような点です。 設定により振る舞いを簡単に変えることができる 例えば、「前処理の方法」「Modelのレイヤー数」「学習するEpoch数」のような局所的な振る舞いから、 開発環境 or Staging環境 or Production環境毎に異なる「データソースの場所」や「認証情報などの機密データ」の指定、
はじめに AlphaGo Zeroは、囲碁AIをゼロから強化学習で鍛え上げたもので、それまで最強だったAlphaGo Masterを打ち破るという偉業を成し遂げました。そしてこのZeroの手法自体は結構シンプル、かつ、強くなれるという美味しいところ取りな手法なのです。また、そのゲームの知識を知らなくても実装できます。 今回は手法の理解と検証のため、リバーシのAIを育てているので共有します。 システム概要 ソースコード: https://github.com/mokemokechicken/reversi-alpha-zero 動作環境 確認済みなのは以下の環境です。 Python 3.6.3 tensorflow-gpu: 1.3.0 tensorflow==1.3.0 でも動きますが、非常に遅いです。play_guiの時は tensorflow(cpu) でもまあ問題ない感じで動きます。
はじめに 「100人を部屋に集めてお金をランダムな相手に渡し続ける」とだんだんと貧富の差が生まれる というGigazineの記事があります。 「そりゃあ、まあそうだろ」「おお、驚いた」と色々な感想があると思いますが、簡単な実験なので色々条件を変えてやってみると、意外と面白かったので紹介します。 「1000人を部屋に集めてお金をランダムな相手に渡し続ける」を色々条件を変えてやってみる 100人だと少ない気がしたので1000人でやってみます。 1000人が初期に金1000を持って、各ターンで無作為に誰かに金1を渡す場合 それぞれ、10, 100, 1000, 10000ターン目の所持金額とその人数のヒストグラムは以下のようになりました。 基本的に、1000を中心とした正規分布っぽい感じですね。試行を繰り返すと裾野が広がっていくのがわかります。 1000人が初期に金1000を持って、各ターンで無
はじめに KerasでネットワークのWeightを固定させて、別のLayerのみ学習したいということはしばしばあります。その時に何を気をつけたら良いかを調べたメモです。 Versions Python 3.5.2 Keras 2.0.2 検証 下記のようなModelを考えます。 ここのNormalContainer の部分のWeightを「更新したい」ときと、「更新したくない」ときがあるとします。 直感的には Container#trainable というPropertyにFalseを設定すれば良さそうですが、それでちゃんと意図通り動くのかやってみます。 コード # coding: utf8 import numpy as np from keras.engine.topology import Input, Container from keras.engine.training imp
はじめに バグなのだと思うのですが(仕様としてはおかしいと思うので)、Dockerfileを書いていて、ADDとchownやchmodの順序によって意図しない挙動になることがあるので共有します。 動作Version docker Docker version 0.8.0, build cc3a8c8d8ec57e15b7b7316797132d770408ab1a docker host os (Mac) boot2docker: 0.5.4 現象 例えば、centosユーザ、の .ssh ディレクトリに authorized_keys を置いて、Permissionなどを設定したいということがあります。 その場合少なくとも下記の条件を満たす必要があります。 ~/.ssh DIR は mode 700 でなくてはならない ~/.ssh DIR 以下の Owner は centosユーザでな
はじめに PHPのComposerでGit上のライブラリを使いたい時のメモです。 下記を見ればわかる https://getcomposer.org/doc/05-repositories.md#vcs のですが、Composer初心者には当たり前のお約束もわからなかったので残しておきます。 今回やりたかったこと 「とあるPHPのComposerライブラリ」をForkして今後ややカスタマイズしつつ使いたい なので、Github上でForkしてそれをcomposer経由で取ってきたい どうしたか こう書けばOKだった { "repositories": [ { "type": "vcs", "url": "https://github.com/yumemi/oauth2-server-php" } ], "require": { "bshaffer/oauth2-server-php": "
はじめに ベイズ最適化(参考:ベイズ最適化入門, 機械学習のためのベイズ最適化入門)を使うと、機械学習の時の各種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
はじめに BigQuery上にユーザID付きのアクセスログ的なデータを格納しているときに「30分以上アクセスがなければ別セッションとみなす」というようなルールでセッション分割したり、Google Analyticsっぽくセッション内のアクセス数や滞在時間などを計算したいということがあると思います。 そのような計算をBigQuery上だけで行う方法のメモです。 方法 アクセスログデータの構造 アクセスログデータには以下の項目を含むとします。 user_id ユーザID(数値でも文字列でもOK) unixtime unixtimestamp(1970/1/1からの秒数)とします。 BigQuery上のTimestamp型でも同じようにできると思います。 action_name, action_param, ... 任意のイベント情報。複数項目あってもやり方は同じになります。 集計方法 Stan
はじめに Docker内でちょっとSyslogを残しておきたい、ということはなきにしもあらずかと思います。 (たくさんDaemonを動かすのは良くないとされつつも・・・) Fedora21などで yum でInstallされるデフォルトの rsyslog.conf だとログが出力されないので、その対策メモです。 症状 rsyslog自体はInstallされていて起動しているのに logger などで /var/log/messages に表示されない。 具体的には、 logger hogehoge としても /var/log/messages にログが出ません。 対策 http://www.projectatomic.io/blog/2014/09/running-syslog-within-a-docker-container/ に書いてある方法で上手く行きました。 RHEL7やFedo
はじめに 最近良くJupyter notebook(Python3)のお世話になっていて、 いくつか小技が増えたので投稿します。 環境 Jupyter Notebook 4.2.x Python 3.5.x ※ 例えば、https://github.com/mokemokechicken/jupyter-tensorflow のDocker上のJupyter環境で使えます。 小技たち sklearnの決定木の結果を図に変換してinlineで表示する sklearn.tree.tree.DecisionTreeClassifier などの決定木のは .dot形式出力はできるものの、それを notebook上に表示しようとすると結構厄介です。 しかし、一定の準備と手続きをすればその辺を簡単にできるようになります。 必要なもの OS上にgraphvizをインストールしておいて dot に環境変数
はじめに gradle の Android Pluginには色々便利な機能があります。 「ビルドバリアント」を使ってソースセット(java, res, assets)などを切り替えるのは特に使いどころがあると思うので共有します。 Version Android Studio 1.1.0 Gradle Android Plugin 1.1.0 ビルドバリアント ビルドバリアントは andoird pluginの機能で、詳細はここにあります。 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants そして、Android Studioもサポートしていて、GUIでどのビルドバリアントを編集するかをスイッチすることができるのがかなり画期的です。 そして このQiitaの記事 Android
はじめに ここにもちょっと書いたのですが、NPI(Neural Programmer-Interpreters) という仕組みがあります。NPIはDeepLearningで「プログラムの実行」を学習させようという試みです。「プログラムの実行」方法を人間がプログラム言語で組み立てるのではなく、「プログラムの実行」をNPIが事例をみて学習するというのが醍醐味かなと思います。 論文中では、「足し算の筆算」「数値のソート」「車の画像を正面に向ける操作」を一つのNPIで実装したということなので、今回はまず「足し算の筆算」を概ね論文の通りに実装することを目指します。 NPIの仕組みの簡単な説明 各モジュール NPIの内部構造を上記の図を使って簡単に説明します。 環境情報: 問題のドメインに特化した環境情報を表す部分。「足し算」の問題なら「ポインタが指し示す位置の文字たち」なるし、「車の画像を・・・」の
はじめに 最近勉強のため http://arxiv.org/ に投稿される論文を読むようにしています。 しかし、ただ読んだだけだと内容とか何を読んだかすら忘れてしまうので、アウトプットを残すという意味でメモします。 ※ 間違った理解をしている可能性があるので、このメモを読むときはご注意ください。 読んだもの A Neural Conversational Model 概要 seq2seqを使って会話するModelを作ってみた話。 いろいろな分野の会話を単にseq2seqで学習させたけど、わりと良い感じだったみたいです。 例えば、ITに関するHelpdeskで、以下の様な会話になったそうです。他にもいくつか会話例が載っています。 (論文より引用) ★ Conversation 1: VPN issues. Machine: hi Human: hello Machine: could you
はじめに ちょっとデータ分析や機械学習をやってみたい、んだけど環境準備が少し面倒だとか、 ハンズオンとかやるんだけど環境セットアップの説明だけで結構時間を使ってしまう、ということがなきにしもあらずかと思います。 Jupyter Notebookは機能的にも素晴らしい環境ですし、Webブラウザがあれば使うことができます。そういう環境はDockerに入れておくと便利で、各自のLocalで起動して使うか、クラウドサーバで起動しておけば、Webブラウザがあれば誰でも使えるのでお手軽です。 既に公開されているDocker Containerもあるのですが、いくつか欲しいものが足りないので追加したものを作ったので共有します。 Jupyter Notebook Docker Container Dockerファイルはここにあります。 https://github.com/mokemokechicken/
はじめに LSTM(Long Short Term Memory) は時系列データの学習によく用いられているものです。 わかるLSTM ~ 最近の動向と共にの記事がとても詳細に説明されています。 上記でも解説されていますが、LSTMは例えば「今までの単語列を入力として、もっともらしい次の単語を予測する」というような「文章の生成」に使うことができます。 このLSTMを使って、例えば、Webサービスにアクセスする 「ユーザの行動」を「単語」 とみなせば 「ユーザの一連の行動」は「文章」 とみなせるわけで、 **「こういう行動を取ってきた人は、次にこういう行動を行う」**という予測モデルが作れないかと考えました。 この予測モデルが作れれば、あとは文章生成のような形で 行動生成 ができます。つまり、ある種の ユーザ行動のシミュレーション ができることになります。 ユーザがある程度アクセスすれば、
はじめに 以前 足し算ゲームを強化学習で学習できるか? を試してみて、問題なく学習ができました。 今回はもう少し現実的な問題を想定してみようと思います。 Webサイトに来るユーザに対して、Webサイト運営者が「あるアクション(メール?クーポン?など)」を起こすと、望ましい行動(そのユーザが何か購入するなど)を取る、とします その時、どのユーザにどのタイミングでどのアクションを取ればいいか、を知りたい という問題があります。 まあ、メールぐらいなら全員に送れば良いじゃん的な話はありますが、送りすぎると離脱に繋がりますし、クーポンはコストもかかるのであまり乱発したくはないです。 この問題を Q-Learning的な枠組みでやったらどうなるのだろうか、というのが今回のお題です。 Q-Learningだと、アクションが複数になっても対応できるのが良い所です。 といっても、簡単な完全に仮想的なシチュ
はじめに TensorFlowを試す時間ができたので、いろいろ試してみたいと思っています。 サンプルデータが付属していたり、本家のチュートリアルが非常に充実しているので、本当にすぐ試すことができて凄いですね。 今回は、MNISTのデータを使ってAutoEncoderをやってみようと思います。 AutoEncoderに関する情報は既にたくさんありますが、例えば http://vaaaaaanquish.hatenablog.com/entry/2013/12/03/033850 の解説はわかりやすいと思います。 今回はAutoEncoderのアルゴリズム的な追求というより、TensorFlowを使い慣れることを目的としているので、あまり細かいことは気にしてないです(活性化関数とかノイズ入れるとか)。 Version Mac OS: 10.11.1 python 2.7.9 matplotli
はじめに 強化学習という分野を初めて認識したので、簡単なお題を強化学習で対応できるかをやってみることにします。 DQNの生い立ち + Deep Q-NetworkをChainerで書いた : きっかけになった記事 強化学習: ε-Greedy法 について参考にしました 今回のは ChainerとかDeepLearningは関係ない話です。 お題: 足し算ゲーム ゲームの基本は足し算です(?)よね。 ゲーム 状態S: 0~9 の整数 アクションA: 1~4の整数 次状態S': (S + A) % 10 報酬R: +1: S' == 7 -100: S' in (5, 9) というゲームを考えます。 要するにプレイヤーには 0〜9の数字が提示され、それについて 1〜4 の数字で答える(A)というものです。 そして次の状態が 7 になれば 1点もらえて、 5か9になると -100点されます。この
はじめに Chainerで機械学習と戯れる: Treasureゲームの強化学習を50日程続けた経過メモ から 更に60日以上経過しました。 賢い学習モデルでなくてもそれなりに目的は達成できるのか、というところに興味があるところです。 TreasureGameの現状 現在のハイスコア時の動きを動画にキャプチャしました。 https://youtu.be/iyBHR1gzumA ハイスコア更新にかかる時間 前回の記録を見ると、 「27万回」「107万回」「192万回」「207万回」「269万回」「297万回」「371万回」 でスコア更新していたようです。今回のを見ると 「549万回」「558万回」「1057万回」「1308万回」 でスコアを更新していたようです。 遂に1000万回突破してました。感慨深い。。 新しい動き 「549万回」目(0:43~)のときに、 敵をぐるっと一周するような動きを
次のページ
このページを最初にブックマークしてみませんか?
『@mokemokechickenのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く