ブックマーク / tkengo.github.io (34)

  • 「やさしく学ぶ 機械学習を理解するための数学のきほん」を執筆しました · けんごのお屋敷

    私が執筆した書籍 やさしく学ぶ 機械学習を理解するための数学のきほん がマイナビ出版から Amazon で 2017/9/20 より発売されます。Amazon 上では既に予約可能になっていますので、興味のある方は是非とも手に取ってみてください。 書は、以前よりこのブログ内で公開していた「やる夫で学ぶ機械学習シリーズ」というシリーズ物の記事をベースとして、加筆・修正を加えたものになります。ブログの記事がベースになってはいますが、追加で書いた分の方が多く、お金を出して買ってもらえるクオリティにするために、より丁寧な説明を心がけて書きました。元記事は「やる夫」と「やらない夫」というキャラクターを登場人物として、機械学習の基礎を面白おかしく丁寧に解説していくものでしたが、書籍化するに当たって「やる夫」と「やらない夫」をそのまま使うわけにもいかなかったので、プログラマの「アヤノ」とその友達で機械学

  • 機械学習でパラメータ推定 - 最尤推定法 - · けんごのお屋敷

    最尤推定法 (Maximum Likelyhood や Maximum Likelyhood Estimation と言われ、それぞれ頭文字を取って ML や MLE などとも言われる) は機械学習やコンピュータービジョンなどの分野で良く使われる推定法で、次のような条件付き同時確率を最大化することでパラメータの推定を行います。 $$ \hat{\theta} = \mathop{\mathrm{argmax}}\limits_{\theta} \mathrm{P}(x_1, x_2, \cdots, x_N|\theta) $$ これだけ見て「うん、アレね」と理解できる人はこの記事の対象読者ではなさそうですので、逆にいろいろ教えて下さい。この記事では理論の面から最尤推定法にアタックしてみます。数式成分が多めで、うっとなることもあるかもしれませんが、ゆっくり読んでいきましょう。 ※この記事を

  • やる夫で学ぶ機械学習シリーズ · けんごのお屋敷

    これは、機械学習に関する基礎知識をまとめたシリーズ記事の目次となる記事です。まとめることで知識を体系化できて自分自身の為にもなるので、こういうアウトプットをすることは大事だと思っています。ただ、普通にブログ記事を書くのも面白くないので、ちょっといつもとは違う方法でやってみようというのが今回のシリーズ記事。 2 ちゃんねるのキャラクターが登場人物として出てきて、彼らが会話して話が進んでいく「やる夫で学ぶシリーズ」という講義調の形式のものがあります。個人的にはやる夫で学ぶシリーズや 数学ガール のような会話形式で話が進んでいく読み物は読みやすいと思っています。さらに、先日みつけた やる夫で学ぶディジタル信号処理 という資料がとてつもなくわかりやすく、これの真似をして書いてみようと思い至りました。記事中のやる夫とやらない夫のアイコンは http://matsucon.net/material/m

    sho-yamasaki
    sho-yamasaki 2016/06/07
    わかりやすい!
  • Word2Vec のニューラルネットワーク学習過程を理解する · けんごのお屋敷

    Word2Vec というと、文字通り単語をベクトルとして表現することで単語の意味をとらえることができる手法として有名なものですが、最近だと Word2Vec を協調フィルタリングに応用する研究 (Item2Vec と呼ばれる) などもあるようで、この Word2Vec というツールは自然言語処理の分野の壁を超えて活躍しています。 実は Item2Vec を実装してみたくて Word2Vec の仕組みを理解しようとしていたのですが、Word2Vec の内部の詳細に踏み込んで解説した日語記事を見かけることがなかったので、今更感はありますが自分の知識の整理のためにもブログに残しておきます。なお、この記事は Word2Vec のソースコードといくつかのペーパーを読んで自力で理解した内容になります。間違いが含まれている可能性もありますのでご了承ください。もし間違いを見つけた場合は指摘してもらえると

  • 畳み込みニューラルネットワークによるテキスト分類を TensorFlow で実装する · けんごのお屋敷

    先日、九工大や東工大などの学生さんが LINE Fukuoka に遊びにきてくれました。せっかく学生さんが遊びに来てくれるので LINE Fukuoka の社員と学生さんとで LT 大会をやろうという運びになって、学生さんは普段やっている研究内容を、LINE Fukuoka 側はなんでも良いので適当な話を、それぞれやりました。当日は私を含む LINE Fukuoka の社員 3 人と、学生さん 2 人の合計 5 人が LT をしました。詳細は LINE Fukuoka 公式ブログに書かれていますので、興味のある方は御覧ください。 [社外活動/報告] 学生を招いてのエンジニア技術交流会を開催しました。 LT に使った資料は公開してもいいよ、とのことだったので、せっかくなので公開。当日はテキスト分類のデモをやったのですが、残念ながらデモ環境までは公開できませんでした。ただ、ソースコードは gi

  • 自然言語処理における畳み込みニューラルネットワークを理解する · けんごのお屋敷

    最近、畳み込みニューラルネットワークを使ったテキスト分類の実験をしていて、知見が溜まってきたのでそれについて何か記事を書こうと思っていた時に、こんな記事をみつけました。 http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp 畳み込みニューラルネットワークを自然言語処理に適用する話なのですが、この記事、個人的にわかりやすいなと思ったので、著者に許可をもらって日語に翻訳しました。なお、この記事を読むにあたっては、ニューラルネットワークに関する基礎知識程度は必要かと思われます。 ※日語としてよりわかりやすく自然になるように、原文を直訳していない箇所もいくつかありますのでご了承ください。翻訳の致命的なミスなどありましたら、Twitterなどで指摘いただければすみやかに修正します。 以下

    自然言語処理における畳み込みニューラルネットワークを理解する · けんごのお屋敷
    sho-yamasaki
    sho-yamasaki 2016/03/11
    日本語訳嬉しいな〜
  • やる夫で学ぶ機械学習 - 単回帰問題 - · けんごのお屋敷

    やる夫で学ぶ機械学習シリーズの第 2 回です。回帰について見ていきます。 第 1 回はこちら。やる夫で学ぶ機械学習 - 序章 - 目次はこちら。やる夫で学ぶ機械学習シリーズ 問題設定 やらない夫 今日は回帰について詳しく見ていく。 やる夫 回帰って響きがカッコいいお。 やらない夫 ここからは、より具体的な例を混じえながら話を進めていこう。 やる夫 具体例は、やる夫の明日のお昼ごはんぐらい大事だお。 やらない夫 まったく意味がわからないたとえなんだが…。そうだな、たとえば、主人公の攻撃力によって、敵キャラに与えるダメージが決まるゲームがあるとしよう。 やる夫 よくある設定だお。 やらない夫 ダメージには揺らぎがあって、常に同じダメージを与えられるとは限らない。さて、実際に何度か敵キャラに攻撃してみて、その時の攻撃力と与えたダメージをグラフにプロットしてみると、こんな風になっていたとしよう。

  • やる夫で学ぶ機械学習 - 序章 - · けんごのお屋敷

    やる夫で学ぶ機械学習を書いてみました。 やる夫で学ぶ機械学習シリーズの第 1 回です。記事がとても長くなったので、分割してます。 目次はこちら。やる夫で学ぶ機械学習シリーズ 機械学習 やる夫 機械学習やってみたいけど、そもそもどうすりゃいいかまったくわからんお。Wikipedia を見たけど、何を言ってるのかさっぱりだお… やらない夫 お前、Wikipedia でわかるわけがないだろ、常識的に考えて… やる夫 そうなのかお…。しかも、やたら数式が出てきて、日語でおkって言いたくなるお。 やらない夫 確かに数式は出てくるが、そもそも数式というのは日語で言うと長ったらしくなるものを誰にでもわかるように厳密で簡潔に表してるものなんだぞ。というか、やる夫は機械学習で何がしたいんだ? やる夫 えっ…、あーえーっと、ほら、アレだお…なんか、こう、パーッと、いい感じの… やらない夫 お前、ただ機械学

    sho-yamasaki
    sho-yamasaki 2016/01/05
    会話がおもしろいw
  • プログラマと数学 · けんごのお屋敷

    この記事は Math Advent Calendar 2015 の 14 日目の記事です。 他のブログが格的な数学のお話を記事にしている中、僕はというとそんなに高度な数学の話ができるわけではないので、自身の数学との関わり方や、また今年に入って開催してきた プログラマのための数学勉強会@福岡 の振り返りとその今後についてを書いていきます。同じような境遇の人が少しでもこっち側の世界に足を踏み入れれるようになることを願って。 プログラマから見た数学の楽しさ アルゴリズムやディープラーニング、ビッグデータ、WebGL など、よく聞くいわば流行りのワードについて、そういうものを使った技術やサービスを見つけた時「実際、中身はどういう風に動いているんだろう?」という好奇心はプログラマであれば潜在的には誰でも持っているのではないでしょうか。それは私達プログラマが、普通の人よりもより身近に普段からそういう

    プログラマと数学 · けんごのお屋敷
    sho-yamasaki
    sho-yamasaki 2015/12/14
    数学資料まとめ、便利そう
  • 文字列検索ツール highway は "高速" を謳うために何をやってきたのか · けんごのお屋敷

    先日、社内で highway のアーキテクチャの話をする機会があったので、スライドを作って話しました。秘密情報というわけでもないので、せっかくなので公開したいと思います。ということで、この記事では highway のアーキテクチャを簡単に紹介します。C で実装されており、実装にあたっては既存のツールよりも高速に動作させるためにいくつもの工夫をしたので highway の内部がどうなっているのか興味がある方は読んでみると面白いかもしれません。 highway についての詳細はこちら。 highway という高速検索ツールを作ってみました 資料 以下、補足や簡単な説明などをつらつらと。 文字列探索アルゴリズム highway ではリテラルによる検索は、以下の論文を参考に実装しています。 A simple fast hybrid pattern-matching algorithm 通称 FJS

    文字列検索ツール highway は "高速" を謳うために何をやってきたのか · けんごのお屋敷
    sho-yamasaki
    sho-yamasaki 2015/12/11
    工夫の積み重ねなんだな〜
  • 理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話 · けんごのお屋敷

    apache や nginx の設定をしたことがあれば以下の様な行を見たことがある人も多いのではないでしょうか。(※ 下記は nginx の設定。apache の場合は SSLCipherSuite です。) ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; これが暗号スイートを指定している箇所です。そしてこの部分、わけのわからない文字列の羅列なのですごく取っつきにくくて何を指定したらいいかわからないので、コピペしてしまう人も多いんじゃないでしょうか。かくいう私も数年前に趣味で TLS 対応の Web サービスを作った時はコピペで済ませていました。この暗号スイートは、以下のような OpenSSL のコマンドを使って対応している一覧を見ることができます。 $ openssl ciphers -v AES128-SH

    理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話 · けんごのお屋敷
    sho-yamasaki
    sho-yamasaki 2015/12/02
    勉強になるなぁ
  • highway という高速検索ツールを作りました · けんごのお屋敷

    いまや grep、ack、ag、pt、sift など様々な grep ツールが存在し、高速 grep ツール戦線が激化している昨今ですが、いかがお過ごしでしょう。私は普段から検索ツールには pt を使っていますが、ふとしたことから文字列探索アルゴリズムに興味がわいてきて highway という高速パターンマッチングツールを開発しました。pt や sift が流行りの Go 言語で実装されている中、我が道を行く highway は C 言語での実装にしました (単に Go 言語を知らないだけとも言う\(^o^)/)。 highway (github) highway とは マルチスレッドで動作する高速パターンマッチングツールです。速そうな名前をつけたくて「高速」でググったら「高速道路」がたくさん出てきたのでこの名前になりました。そりゃそうだ。 機能 基的な機能としては pt とほぼ同じです

    highway という高速検索ツールを作りました · けんごのお屋敷
  • プログラマのための数学勉強会@福岡を開催しました · けんごのお屋敷

    数学とプログラミングの世界を楽しもう - ProjectEuler - 僕の話でした。 福岡での初開催ということで、最初から少し難易度を下げた話題を取り扱おうと思っていました。ということで、題材にプロジェクトオイラーの初級の問題を選んで、その問題の紹介と効率的な解き方の解説を入れてみました。スライドでは数列に関する 4 つの問題とその効率的な解き方を紹介していて、当日は時間がなかったので 1 〜 3 つ目に紹介した問題の解説は飛ばして、4 つ目の問題の解説だけやりました。 資料はこちら 資料に対する補足1 - はしょった解説 まず当日の発表では時間が足りなくて完全にスルーした 1 〜 3 つ目の問題ですが、公開した資料にはちゃんと全部解説スライドをつけています。基的にどれも数列の問題で、高校の時に習った数列の和を求めることを目標としていますが、問題番号が後に行く程難しそうになっていくのが

    プログラマのための数学勉強会@福岡を開催しました · けんごのお屋敷
  • 「目に見えるパーセプトロン」という資料を作ったので公開します · けんごのお屋敷

    先日、社内の勉強会でネタが募集されていたので機械学習、特にパーセプトロンについてしゃべりました。パーセプトロン自体は非常に単純なモデルで、理解も実装も比較的容易で、それゆえに様々なものの基礎になっています。近年、深層学習と呼ばれる学習を何層にも渡って行うような概念が話題になっていますが、そこに出てくるニューラルネットワークは一種の多層パーセプトロンでもあります。ここ数年での機械学習や深層学習の進歩のスピードは素晴らしいものがありますが、そんな中で基礎的な部分を押さえておくことはより大事になってくるのではないでしょうか。 社内勉強会で使ったスライドでは、簡単な機械学習の概要とパーセプトロンの仕組みを解説してみました。インターネット上に公開したので、このブログでも紹介しておきます。 補足 いくつか資料の補足をしておきたいと思います。 学習について 基的には対象データから素性を抽出して、それを

    「目に見えるパーセプトロン」という資料を作ったので公開します · けんごのお屋敷
  • WebGLでなんか綺麗なキラキラなパーティクルの演出を作ってみた · けんごのお屋敷

    元々 OpenGL を使っていたことがあって 3D の基礎についてはある程度わかっていたので WebGL には当にすんなり入ることができた。WebGL は OpenGL ES の仕様を元にしているので当然といえば当然なのですが、他の OpenGL のプラットフォームと比べて WebGL はテキストエディタとブラウザさえあれば開発環境が整うという手軽さ、さらに WebGL 界隈ではとても有名な three.js というライブラリがあるおかげで、さらに敷居が下がってる。ということで、前々から WebGL で作ってみたかった綺麗でしなやかなパーティクルの演出を作ってみました。 The XSEEDS ※ちなみに XSEEDS というのは、有志で集まったエンジニアがお酒飲みながらワイワイ開発やってる集団です。 作ってみたので、せっかくなので WebGL ってこんなことができるよ、こうやって作れるん

    WebGLでなんか綺麗なキラキラなパーティクルの演出を作ってみた · けんごのお屋敷
  • 独学で 1 ヶ月間 OpenGL を学んで得た基礎知識のまとめ ~ 2D 編 ~ · けんごのお屋敷

    OpenGL。その単語の響きだけで素晴らしく魅力的に思える 3D コンピューターグラフィックスライブラリは、これまで何人もの駆け出しゲームプログラマーに幾度と無く挫折を味わわせてきた。「ゲーム作るならやっぱり高速に描画できる OpenGL でしょ。でも自分が作るゲームに 3D はいらないし、しかも難しそうだし、別に 2D 描画だけできればいいや」 と、軽い気持ちで手を出したのが運の尽き、世の中そんなに甘くはなかった。OpenGL というその難攻不落城は私達の進む道を阻むように高々とそびえ立っている。 OpenGL がコレほどまでに取っ付きにくいのは 気軽に Hello World できない からなんじゃないかと思う。OpenGL の場合だとそれは何かしら 1 つの図形を表示することにあたるのかな。でもたったそれだけなのに、覚えることが山ほどありすぎて全然題にたどり着くことができないし、O

  • 謎の単位 "dp" (Density-independent Pixel) にせまる。あと drawable の話とか in Android · けんごのお屋敷

    Android 端末のディスプレイってめちゃくちゃいろんなサイズがあって Android を始めたばかりの自分にはそれぞれに最適なレイアウトや画像をどうやって作ればいいのかって全然わかっていませんでした。それに Android ではサイズの単位に px (pixel) じゃなくて dp (density-independent pixel) を使うらしいってことは聞いたことあるけど、そもそも dp ってなんなの?という感じだし。わからないまま放置しておくのも良くないので色々調べてみたらだんだんとわかってきたので、忘れない内にまとめておこうかと思う。既にネットにある記事の二番煎じになるかもしれないけど、インプットしたものを体系的にまとめて知識を自分のものにするためにも再まとめ的なものを書く。 用語定義 自分がこの話題について調べ始めた時、自分の中で Android 用の各用語の定義がはっきり

    謎の単位 "dp" (Density-independent Pixel) にせまる。あと drawable の話とか in Android · けんごのお屋敷
  • Hometype 2

    Mode Hometype has like vim's modes. All modes can be switched with keyboard manipulation. Normal Mode In most cases Hometype is in this mode. You can scroll to up or down on the page, and move to back or forward in the history. Insert Mode Hometype shifts the current mode automatically to this mode when a form is getting the focus. In insert mode don't bind a command to key because you have to inp

    Hometype 2
  • Weechat内でマウスを操作せずにURLを開けるプラグイン欲しくありませんか? · けんごのお屋敷

    CUI で動作する IRC クライアントの 1 つに weechat があります。ペパボでは業務に IRC を利用しており、会話中によく URL が貼られたり BOT の通知で URL が貼られたりして、それなりの頻度でチャンネルの中に URL が出現します。Mac であれば Command を押しながら URL をダブルクリックするとブラウザで開けるのですが、その際に一度キーボードから手を離す必要があって面倒臭かったので Hometype(紹介記事) のヒントモードをヒントに weechat のプラグインを作ってみました。 前提 Mac OS X でのみ有効なプラグインです。 ruby で書かれているので ruby を有効にしてコンパイルされている必要があります。brew でインストールするのであれば --with-ruby オプション付きでコンパイルされている必要があります。 インスト

  • リモートリポジトリの master は破壊するべからず。git push できないようにしてみよう · けんごのお屋敷

    会社で github で管理しているリポジトリがあるのですが、なるべくなら master に直接 push するのは避けたいものです(最近のフローとしては pull request から master にマージされることが多いですよね)。 最初は github 上に git のフックを仕掛けて master に push しようとする要求があればはじくようにしたいと思ってたのですが github ではそういったことは出来ないようなので、サーバー側ではなくローカル側にフックを仕掛けて master に push できないようにしてみました。 デザイナなど黒い画面が苦手な人でも最低限のコマンドで実現出来るように、インストール用のスクリプトを書いて gist に公開 してみました。 フックのインストール ターミナルから以下のコマンドを実行すればOKです。 $ curl -s https://gi

    リモートリポジトリの master は破壊するべからず。git push できないようにしてみよう · けんごのお屋敷