タグ

ブックマーク / blog.monochromegane.com (10)

  • プログラマのための数学勉強会@福岡#5 で「Goによる勾配降下法 -理論と実践-」を発表してきた

    8/6に開催されたプログラマのための数学勉強会@福岡#5で「Goによる勾配降下法 -理論と実践-」を発表してきました。 今回は勾配降下法にフォーカスした内容となっています。機械学習というブラックボックスが実は誤差を最小化するものであり、そのために勾配降下法というアプローチがある、という基でもあり、数式に抵抗があると最初につまづく箇所でもあります。 今回は数式と図解に加え、Go言語によるサンプル実装も添えることでプログラマへも理解しやすくなるように資料を作ってみました。 また、勾配降下法の手法だけではなく収束速度の改善や学習率の自動調整といった最適化の手法も紹介しているので、基を理解している人もよければ御覧ください。 サンプル実装 発表で使ったサンプル実装はこちらで公開しています。 正弦関数を元にしたトレーニングセットに対して多項式回帰を行うことができます。 このような感じで各種勾配降下

    プログラマのための数学勉強会@福岡#5 で「Goによる勾配降下法 -理論と実践-」を発表してきた
    bunnyhop
    bunnyhop 2016/08/07
  • The Platinum Searcherを5倍高速化するためにやったこと

    この記事は Go Advent Calendar 2015 その2 の 15日目の記事です。 先日、5倍の高速化を実現した高速検索ツールThe Platinum SearcherのV2をリリースしました。 今回は、高速化にあたり工夫した点をまとめておこうと思います。 The Platinum Searcherの基実装について 以前、GoConferenceで発表した資料にまとめてあるので、興味のあるかたはご覧ください。 基的にはFind、Grep、PrintのGoroutineがそれぞれの結果をChannelを経由して渡すつくりになっており、それぞれのGoroutine内で並行で処理を行うために更にGoroutineを起動しています。 ボトルネックの調査 今回は完全書き直しだったのでボトルネックを潰していくという手法ではなかったのですが、再実装にあたり、気をつけるべき点を確認する上でも

    The Platinum Searcherを5倍高速化するためにやったこと
    bunnyhop
    bunnyhop 2016/06/27
  • V2! V2! Go言語製 高速検索ツールThe Platinum Searcherのv2をリリースしました

    What a lovely day !!! 日、Go言語製 高速検索ツール The Platinum Searcher(pt) のバージョン2をリリースしました。今回は検索速度の向上に主軸を置き、旧バージョンと比較して5倍の高速化を実現しています。 v2 約2年前にGo言語の勉強のためつくったThe Platinum Searcher(pt) ですが、おかげ様でたくさんのPRをもらいながら随分と高機能になりました。反面、速度面についてはまだチューニングの余地を残した状態が続いていたため、今回のバージョンアップにあたって全面書き換えを行い高速化を図りました。 Benchmark まずはベンチマーク結果をご覧ください。 MacBook Pro (OS X 10.11.1 / CPU: 2.5GHz Core i5, Memory: 8GB) での実行結果。 Linuxカーネルのソースコード

    V2! V2! Go言語製 高速検索ツールThe Platinum Searcherのv2をリリースしました
    bunnyhop
    bunnyhop 2016/06/27
  • 2016

    去年も相変わらずGoを書いたり、ブログ書いたり、発表したり勉強会開催したり、自分のペースで自分の楽しいことをやってきたし、ふりかえってみれば、自分なりにそれらしい量もやれたかなとも思うけど、どうしても一昨年からの漫然と続く楽な活動であったと言われれば否定はできない感じがあった。活動の前提が個人の枠を超えていない。Go書いたりブログ書いたりも個人の小さな承認欲求を満たしたいだけなのでどうにもつまらんなあという感じ。 個人活動は非常に楽である。自分の好きなときにつくって公開して、たまに褒められてニヤリとして、また次をつくる。当たらなくても趣味なのでという言い訳が自分に立つ。なんと楽なことか。アウトプット最高! そう、アウトプット最高なのだ。個人のアウトプットをキッカケに色々なところで知ってもらえて、つながりができていく。アウトプットでスキルが洗練される。ペパボに入る前はこういうことが喜ばれる環

    2016
    bunnyhop
    bunnyhop 2016/06/25
    良い
  • 2015年のふりかえり

    仕事 今年は7月頃に2年ほど携わっていたチームから異動して新しい環境になったのが一番大きな変化だった。異動前にPHPバージョンアップを成すことができたし、新しいチームでは新機能開発しながらも技術的な課題がサービスの発展を妨げることのないよう、継続的な改善ができる体制を取ることができた。今のチームは最高で、お互いに敬意を払いながらも得意領域で活躍し、不足しているところを補い合えているんじゃないかと思う。ただ、チームとしての成熟は変化に反応するための柔軟性を失う可能性も含んでいるので、新しい目標、例えば新しい技術への挑戦とか持っている技術の深掘りとかお互いを刺激し合える環境というのをつくっていきたいなあと思う。 技術 2014年から引き続きGo言語一色の年になった。Top Go GitHub developers in Japanで3位に位置付けられてるのは素直に喜びたい。当たるか当たらないか

    2015年のふりかえり
    bunnyhop
    bunnyhop 2016/06/24
    とても良いスライドだった
  • Fukuoka.go#7 ソースコードリーディングvol.1を開催しました

    今年入ってちょっと休憩していたFukuoka.goなんですが、@nobkzさんがソースコードリーディングやろうという企画を持ちかけてくれたので久々に開催しました。 Fukuoka.go#7 ソースコードリーディングの会vol.1 今回は発表はしましたが、会場準備などの裏方だったので参加者としても勉強会を楽しむことができたのが個人的にはうれしかったです。 発表 ダウンタイム・ゼロを支える技術 in Go Goでアプリをダウンタイムなしで運用するための方法あれこれを発表しました。 アプリでがんばるところとインフラでがんばるところのバランスは難しいですね。 ベストなやり方を取れるように検討することは大事だと思います。 並列とGo @nobkzさんの発表です。 Go初学者向けにコードリーティングやりやすくなるようにgoroutineまわりなどを解説してくれました。 lexer実装について (@ke

    Fukuoka.go#7 ソースコードリーディングvol.1を開催しました
    bunnyhop
    bunnyhop 2015/04/28
  • Go言語でActiveRecordライクなORMをつくった

    Goで DataMapperじゃなく、ActiveRecordライクにDB操作したいと思ってつくってみました。 go/parserとgo/astでソースを解析、個々の構造体ごとにARなコードを生成します。 argen ActiveRecord** Gen**eratorでargenです。 クイックスタート テーブルを表す構造体に+ARアノテーションをマークします。

    Go言語でActiveRecordライクなORMをつくった
    bunnyhop
    bunnyhop 2015/03/04
  • すべてが╭( ・ㅂ・)و ̑̑ グッ ! になる - Jenkinsビルドパイプライン結果をプルリクエストに表示する

    Jenkinsのジョブ結果をプルリクエストに表示するときはGitHub pull request builder pluginを使ってますが、単体のジョブでしか利用できなかったので、複数ジョブ(ビルドパイプライン構成)のときに結果を表示する方法をまとめておきます。 ビルドパイプラインの構成 今回のビルドパイプラインはこんな感じを想定しています。 プルリクエストへの更新やコメントをトリガーにジョブが起動し、単体テスト、回帰テストを実行します。 あわせて、実行中、失敗、成功の状態がプルリクエストに表示されます。 成功したらプルリクエストに ╭( ・ㅂ・)و ̑̑ グッ ! って出ます。グッ ! って。 これを満たす以下のジョブをつくっていきます。 ジョブの結果をプルリクエストに表示する 複数のジョブをビルドパイプラインとして実行する GitHub pull request builder

    すべてが╭( ・ㅂ・)و ̑̑ グッ ! になる - Jenkinsビルドパイプライン結果をプルリクエストに表示する
    bunnyhop
    bunnyhop 2014/11/10
  • 「ほい、これ」ってファイルを渡せる Hoi というツールをつくった

    PC間でのファイル受け渡しのときにファイルサーバを使うことがたまにありますが、OSによってファイルパスやその書式が違ったり、受け渡し用のディレクトリをつくるとか、ファイル渡したいだけなのに、なんだか小さなひっかかりがあってスマートじゃないなあといつも感じてました。 なので、もっと直感的に「ほい、これ」って渡せるツールをつくってみました。 Hoi Hoiはファイルの受け渡しを簡単に行うためのコマンドラインツールです。Go言語で書かれており、HTTPファイルサーバを利用して機能を提供します。 monochromegane/hoi (An easy file transfer tool using http file server.) ファイルを渡す 使い方は簡単でローカルのファイルパスをhoiコマンドの引数に渡すだけです。 そうすると以下のような、ダウンロード用のURLが出力されます。 htt

    「ほい、これ」ってファイルを渡せる Hoi というツールをつくった
    bunnyhop
    bunnyhop 2014/07/18
  • Go言語での構造体実装パターン

    Go言語での構造体実装は、埋込や独自コンセプトのインターフェースといったGo言語独自の機能を理解して行う必要があります。 今年からGo言語を始めましたが理解が曖昧なままだと実装に迷うことが何度かありました。今回よい機会なので、Go言語での構造体実装パターンとしてまとめてみることにしました。 構造体実装パターン 実装パターンの洗い出しとして、GoFデザインパターンをGo言語で実装する手法をとりました。 その中で繰り返し現れる実装をGo言語での構造体実装パターンとしてまとめてみました。 コンストラクタ関数 エクスポートによるアクセス許可 インターフェースによるポリモフィズム 構造体によるポリモフィズム 構造体によるサブクラス・レスポンシビリティ 構造体による移譲 関数による移譲 以下、それぞれのパターンを解説していきます。 コンストラクタ関数 Go言語には構造体のコンストラクタがないため、構造

    Go言語での構造体実装パターン
  • 1