社内のCV輪講で PyTorch Lightningについて共有したときの資料です 「今日から始める PyTorch Lightning」 サンプルレポ:https://github.com/karasawatakumi/monodepth-dev

今回は UMAP で当ブログのアクセスログ (Nginx) を可視化してみます。実行環境は macOS 10.13, CPU 1.6GHz Intel Core i5, メモリ 8GB です。 次元削減のアルゴリズムは大きく2つのカテゴリに分類される。 データ内の距離構造を保持する手法 (e.g. PCA, MDS adn Sammon mapping) 大域的な距離の上で局所的な距離を保持する手法 (e.g. t-SNE, Isomap, LargeVis, Laplacian eigenmaps, diusion maps, NeRV and JSE) UMAP (Uniform Manifold Approximation and Projection) は多様体学習による可視化 & 次元削減手法で, t-SNE と同程度の可視化の質を持ちつつも高速に動作する。UMAP は t-SN
SentencePiece + 日本語WikipediaのBERTモデルをKeras BERTで利用する TL;DR Googleが公開しているBERTの学習済みモデルは、日本語Wikipediaもデータセットに含まれていますが、Tokenizeの方法が分かち書きを前提としているため、そのまま利用しても日本語の分類問題ではあまり高い精度を得ることができません。 このため、SentencePieceでTokenizeしたデータセットで学習し直す必要があります。 BERTのトレーニングは結構な時間やマシンリソースが必要ですが、ありがたいことにSentencePiece+日本語Wikipediaで学習済みのモデルを配布してくれている方がいらっしゃるので、今回は以下を利用します。 BERT with SentencePiece を日本語 Wikipedia で学習してモデルを公開しました BERT
この記事は ナーススケジューリング問題という最適化の問題を遺伝的アルゴリズムで解いてみたらまあまあの精度が出たので記録です pythonのdeapというライブラリを使っています 前提 ナーススケジューリング問題 ナーススケジューリング問題というものがあります 病院等の医療施設に勤める看護師の勤務スケジュールを決定する問題のことであり,シフトスケジューリング問題の代表例である.日勤・夕勤・夜勤等の複雑なシフト勤務や多岐に渡る制約の考慮のため,実際にスケジュールを求めるのは人手では手間のかかる困難な作業であり・・・ 要するにシフト勤務のスケジュールを自動的に最適に組むというものです 制約が色々あって、必要人数を満たすような基本的なものから、公平性、必須な資格/役割、この2人は(仲が悪いから?)一緒に入れないなど、いくらでも複雑になりうる問題て感じで、完璧な解答を作るのは困難なので、近似解を求め
Edward Edwardはベイズ統計などで扱うような確率モデルを実装できるライブラリです。 同じPythonのライブラリで言えば、PyStanやPyMCがその類のものになります。 Edward: http://edwardlib.org/ 特徴としては、 2016年より開発されている確率的プログラミングのPythonライブラリ Dustin Tran氏(Open AI)が開発をリード LDAで有名なコロンビア大学のBlei先生の研究室で開発 計算にTensorFlowを用いている 計算速度がStanやPyMC3よりも速い GPUによる高速化が可能 TensorBoardによる可視化も可能 などが挙げられます。 ベイズ統計はもちろんですが、深層学習などに対するベイズの適用の実装も可能のようです。 この辺りについてはチュートリアルに色々と参考例があり、例えば、下記のようなアルゴリズムの実装が
「囲碁をディープラーニングするのは面白い」という噂なので(笑)、私も試しに一度やってみることにしました。作るならやっぱり評価関数。それも、その時の形勢を「目数」で教えてくれるやつがなんかいいですよね? とりあえず今回は19路盤用です。 まずは学習に使うデータについてです。とりあえず評価する局面は、COSUMIで打たれた19路盤互先の作り碁の棋譜から作りました。GNU Go、強い人、弱い人、意図した序盤早々の連続パス、意図しないクリックミスの混ぜ合わさった様々なよく分からない局面が出現しそうで、まあ良いのではないかと…(笑) まず、最後のパスパスを取り除き、1手から最終手の間の一様乱数にまで棋譜の手数を短くして、さらに対称形を考慮しない完全な重複分を取り除き、残った棋譜の最終局面を使うことにしました。 そして次に、その局面に付けるラベル、今回の場合は「目数単位の形勢判断」ですが、うーん、これ
要約 超高精度自然言語処理&係り受け解析を実施するGiNZAがすごくて、 Colaboratoryにより環境構築不要でブラウザだけでサクッと使える。 そのサクッと感を強調すべく、LT(ライトニングトーク)の最中に その場で環境構築&コードを書いて自然言語処理、 しかも高精度&高機能ができるよ、という「手品」をやってみた。 一見スゴイが「手品」にはタネがあって・・・。という話をする。 最後まで読むと、以下の二つのノウハウが分かる ・GiNZAで、ゼロから3分で高精度自然言語処理する方法 ・LTでライブコーディングする手品のタネ 背景①: GiNZAすごいっ! 2019年4月に発表された「GiNZA」という、 日本語自然言語処理オープンソースライブラリを動かしてみたら、 簡単に高精度で(超重要)、係り受けやベクトル化なども含めた、 自然言語処理全般が実施出来たので驚いた。 ご参考: https
この記事はRetty Inc. Advent Calendar 2017 1日目です。 一発目は緊張しますね。なので今年は去年の「character-level CNNでクリスマスを生き抜く」よりも若干真面目に書きます:) doc2vecを拡張してリコメンドを学習させたお話です。 リコメンデーション再考 以前「口コミのdoc2vecを用いたリコメンデーションシステムの構築」という記事でdoc2vecを用いて口コミの分散表現を獲得してそこからユーザー・店舗のベクトルを計算してリコメンドを行いました。 この時のやり方で出てきたおすすめ店舗は、Rettyクラフトビール担当の私にはありがたい内容だったのであれはあれで良しと思っています。(実はこの時の成果がちょろっとRettyのアプリに取り込まれました😊) しかし一方でちょっと気になったのは、 「うわっ…私のリコメンド、ビール多すぎ…?」 という
TensorFlow2.0とGoogle Colaboratoryの無料TPUを使って、DCGANを実装しました。 訓練経過の様子 pic.twitter.com/2qXowYMk6t — しこあん@『モザイク除去本』好評通販中 (@koshian2) October 21, 2019 何をやったか Google ColabのTPU+TF2.0でCelebA(約20万枚)をDCGANで生成 TF1.X系のTPUでは、同時に実行可能なグラフは1個の制約があったため、GANの訓練が容易ではなかった(こちらの記事にある通り、不可能であったわけではない。しかし、低レベルAPIが必須で決して容易ではなかった)。TF2.X系のTPUでは、もっと容易にGANを実装できた。 DCGANの論文通りのモデル(パラメーター数:G=12.7M, D=11.0M)で。64x64の画像20万枚を、1エポックを40秒程
はじめに 2020年10月にリリースが予定されているPython3.9で新たに加わる変更をPython3.9の新機能 (まとめ)という記事でまとめています。少し分量のありそうな話題を別記事にしていますが、これはその第二弾で、有向非巡回グラフのソートについてです。 有向非巡回グラフとトポロジカルソート まず、ここでいうグラフは折れ線グラフとか棒グラフとかデータを視覚的に表す図表のことではなく、グラフ理論のグラフです。グラフはデータ構造の一種で、ノード(頂点)とそれらを繋ぐエッジ(枝)で構成されています。ノードやエッジに何かしらの意味をもたせることによって、関連性を持つ情報を表すことができます。 グラフにもいくつか種類があり、その最初の分かれ道がエッジに方向があるかないか。方向があるものを有向グラフ(左側)、無いものを無向グラフ(右側)といいます。 エッジはノードを繋ぐものですが、繋がれたノー
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 目的 随時更新されているKPIの時系列データに関して、数値に異常があった場合になるべく早くアラートを出せるようにしたいという要請がありました。これはいわゆる異常検知の問題です。多くの場合、異常検知では異常・正常を判定するラベル情報がないので、教師あり学習ができないことが多いです。教師なしで時系列データを異常検知する方法としては、ARIMA など時系列モデルを当てはめて、予測値と実績値の差が大きすぎるものを異常判定する、という方法が考えられます。しかし、この方法は精度の高い時系列モデルを作成できることが前提です。そこで、別のアプローチがな
最近の自然言語処理では、大規模なテキストから単語の分散表現や言語モデルを学習させて使っています。学習する際のテキストとしては、分量や利用しやすさの都合からWikipediaが選ばれることが多いですが、その前処理は意外と面倒で時間のかかる作業です。そこで、本記事では比較的最近リリースされた前処理済みのデータセット「Wiki-40B」とその使い方を紹介します。 Wiki-40Bとは? Wiki-40Bは、40言語以上のWikipediaを前処理して作られたデータセットです。このデータセットは言語ごとに学習/検証/テスト用に分かれているので、単語分散表現や言語モデルの学習・評価に使えます。言語ごとの対応状況については、以下のページを参照するとよいでしょう。 wiki40b | TensorFlow Datasets 前処理としては、大きくは以下の2つに分けられます。 ページのフィルタリング ペー
はじめに 前回の記事で時系列入力に対するオートエンコーダーを組んだ。 aotamasaki.hatenablog.com 今回は潜在変数を正規分布に押し込むというVariational AutoEncoderを組んでみた。CNNとVAEを組み合わせる記事は割と見つかるのに、RNNとなったとたん見つからないものである。 データはMNISTであるが後述するように、時系列だと見なして入力した。 まずはモデルとデータの概要を説明する。そのあと、結果で再構成された数字と生成された数字の例を示す。最後に、潜在変数Zが正規分布になっているのか確かめる。 はじめに モデルの概要 データの概要 結果 Zは本当に正規分布をしているのか? まとめ 参考文献 モデルの概要 また、赤字で示した損失関数についての数式は以下のようになっている。詳しくは最後に示す参考文献を見ていただきたい。 コードはこんな感じ def
Sparkシリーズ第2弾です。今度はMLlibを使って協調フィルタリングを用いたレコメンデーションの実装を行います。 第一弾 【機械学習】iPython NotebookでSparkを起動させてMLlibを試す http://qiita.com/kenmatsu4/items/00ad151e857d546a97c3 環境 OS: Mac OSX Yosemite 10.10.3 Spark: spark-1.5.0-bin-hadoop2.6 Python: 2.7.10 |Anaconda 2.2.0 (x86_64)| (default, May 28 2015, 17:04:42) 本稿では上記の環境で行ったものを記載していますので、他の環境では設定が異なる場合もあるかと思いますのでご注意ください。また、基本的にiPython NotebookでのSparkの実行を想定しています。
概要 絶賛フロントエンド勉強中の井上です。今回は自然言語処理界隈で有名なBERTを用いた文書分類(カテゴリー分類)について学習(ファインチューニング)から予測までを紹介したいと思います。本記事では実装ベースでお話しするので、「そもそもBERTって何?」という方は検索するか、参考URLを載せておくのでそこから飛んでいただけると助かります。 目次 事前準備 学習 評価 予測 参考文献 事前準備 Google Colaboratory 学習は膨大な計算量が必要なので、Google Colaboratoryを使用します https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja 無料でTPU(Tensor Processing Unit)が使えるのでお得! googleさんありがとうございます TPUはIntelのHaswellと
はじめに 2chまとめを読んでいたら、"長い"みたいなレスを投げられていた二郎コピペがあった。せっかく名文なのに長いの一言で一蹴されては報われないので、日本語の自動要約をしてくれるshucaを用いて短く要約してみた。 shucaとは? github.com python2系で動く自動要約プログラム。shuca単体では動作せず、他に京大で開発されているjuman(形態素解析プログラム)とknp(構文解析プログラム)が必要。 実際に要約してみる まずはコピペを以下から拾ってくる。 fullopen.blog.jp ■その50 今日、ついに二郎デビューしたんでレポっす! 川崎店に行ったらすごい行列でまずびっくり! すっげえな!と思って店の中を見て、 みんなが食ってるラーメンのボリュームを見てまたびっくり! これが二郎・・・と、思わずヨダレが出る。 待つ事20分、やっと席につくことができた。 「ヤ
この記事の目的catboostというライブラリがあります。GBDT(Gradient Boosting Decesion Tree )という決定木をアンサンブルする方式の識別モデルを学習するものです。同様のライブラリは他にはXGBoostやLightGBMなどが有名です。 GBDTって何やっているの?というのは以下のXGBoostのドキュメントの画像がわかりやすいです。要は、複数の決定木が存在していて、その結果をあわせて結果を決定(アンサンブル)しているわけです。学習に応じて徐々に木を追加していくのですが、どうやって新しい木を追加していくかのやり方に、「Gradient Boosting」という手法を使っている、というイメージです。catboostは、カテゴリカル変数の扱いに新しい手法を導入していて、論文にもなっています。catboostの"cat"はcatgoryの"cat"なのですね(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く