サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
blog.monochromegane.com
先月、博士(情報科学)の学位を取得した。 12年前、福岡 おもしろい it 会社と検索をして、株式会社paperboy&co.(現GMOペパボ株式会社)に運用開発エンジニアとして転職した時1からすると、予想だにしなかった状態である。 転機は2017年1月だった。 ペパボで切磋琢磨できる仲間に恵まれ、OSS活動や登壇を通したアウトプット、社内での成果を自負する一方で、社内でもレベルの高いエンジニアとの仕事の機会を通して、自分の限界も感じ始めていた。 そんな折、研究所の所長から研究職への打診があった。 確か、当時進めていたログ活用基盤の構築とその内容の研究所のコンセプトへの親和性からだったように記憶している。 感じていた限界を「コンピュータサイエンス」ってやつや「研究的アプローチ」ってやつで突破できるかもしれない、研究って何もわからないけれども何とかなるだろう、渡りに船だとばかりにこの誘いに乗
Go言語で、AIモデルに対する推論をコマンドラインで実行するafaというツールを作りました。入出力としてテキストストリームを前提としており、パイプやリダイレクトを用いて他のコマンドと連携しやすいのが特徴です。 $ echo $ERROR_MESSAGE | afa new -p "What is happening?" /path/to/file1 /path/to/file2 与えるプロンプトやコンテキスト情報によってAIモデルが柔軟に振る舞いを変えてくれるので、これまでの個別ツールでは対応が難しかった用途における自動化にも有用でしょう。 また、テキストストリームを扱えるリッチなTUIのコマンドafa-tuiも別途提供しているので、ターミナル上でのチャットも快適です。 デモ リッチTUIによるチャット 快適なインタラクティブチャットのため、Markdownを装飾して描画しつつ、lessコ
2023年10月に初めてのアカデミックな国際会議での発表を終えました。 社会人博士課程に進学後、2021年5月の初投稿から丸2年、7回目の挑戦にしてようやくの採択ということで、自慢できるものではないのですが、同様に博士課程において日々挑戦している方々に何かの参考になればと思い、まとめておきます。 略歴と背景 2017年からペパボ研究所で研究開発職に従事しています。 情報システムの自律適応等の研究に取り組み、2020年10月に社会人博士課程に進学しました。 博士課程では、多様かつ継続的に変化する環境に適応する実用的な情報システムの実現に向けて、多腕バンディット方策を用いる機構の研究を進めています。 修士を飛ばした進学であったこともあり、進学時の実績としては国内ジャーナル論文1本のみでしたので、博士号取得に向けてはジャーナル論文をもう1本と、水準を満たす国際会議での採択1本を目指しての挑戦とな
博士課程に進学し、国際会議に論文を投稿した際に行った論文サーベイの流れやツールについてまとめておく。 今回のサーベイを行うにあたり、既存研究に対する自身の研究の位置づけを明らかにすることを目標とした。 すなわち、自身の提案がある程度カタチになっていることを前提とした集中的サーベイ方法である。 論文サーベイの流れ 以下に行った工程を示す。 会議名とキーワード検索による候補のリストアップ 各候補のアブストラクトによる選定 各候補の精読 必要に応じて参考になる会議名、キーワード、参照論文を候補に追加 候補がなくなるまで繰り返す 以降、各工程について利用したツールや工夫などを述べる。 1. 会議名とキーワード検索による候補のリストアップ サーベイは十分な量の候補を必要とする。 自身の研究分野や貢献と完全に一致する論文は多くはないが、全くゼロではない。 もし多すぎるのであれば、自身の研究の貢献や目的
はじめに 研究者は、自身の研究の有用性を主張するため論文を発表する。 しかしながら、研究の有用性を主張するために、抜け漏れがなく主張点が明確な文章を書くのは、慣れないうちは難しい(慣れても難しい)。 本エントリでは、論文の構造を見出だす工程とその構造を書き下す工程を明示的に分離することで、抜け漏れがなく主張点が明確な論文執筆を行う方法を検討する。 論文執筆の課題 前述の通り、研究の有用性を主張するために、抜け漏れがなく主張点が明確な文章を書くのは、慣れないうちは難しい。 これは、主張の整理と文章の生成を頭の中で同時にやろうとしていることが原因であるように思う。 第一に、主張の整理は複雑なタスクである。 研究の有用性の主張は、いくつかの課題や提案、評価といった複数の要素と、要素同士の関係性のあり方、すなわち「構造」を持つ。 要素やその関係性の増加に伴い、構造は複雑になるため、頭の中だけで網羅
先日8/7、九州大学大学院システム情報科学府博士後期課程に無事合格しました。 10/1より入学します。 専攻は情報知能工学[*1]です。 39歳、文系学士から修士を飛ばして理系の博士課程への挑戦となった経緯や入試に向けた準備などまとめます。 略歴 大学では環境政策を学びましたが、工学的なアプローチの解決手法の方に興味を持ち、いろいろあってソフトウェアを扱える仕事につきました。 2012年に転職し、現職のGMOペパボでインターネットサービスのWebアプリケーションの開発・運用維持業務に携わってきました。 2017年より同社の研究職として情報システムの自律適応等の研究に従事しています。 研究員になった理由 サービスの運用開発の傍ら、ログ活用基盤の構築に取り組み、サービスを動的に改善していくための仕組みづくりと機械学習に興味を持ち始めたところ、その前年に設立したペパボ研究所でやってみませんかと@
先週の6/22、初めてジャーナルの採録通知をいただいた。 大学は情報系ではなく、大学院にも行っていないので、研究なるものを始めたのが、ペパボ研究所に入った2017年1月から。3年半もかかってしまった。 元々、サービスの運用開発をしていた経緯もあり、2017年の前半はその延長で研究報告を2本書き切った。 初めての研究報告は、論文の型みたいなのを徹底的に教えてもらえた。 今も執筆時に気をつけるところのほとんどはここで教えてもらったことが根底にあると思う。 2017年の後半から、研究の内容自体も「すごいもの」にしようとした結果、迷走が始まる。 自分のやってきたことを深堀するわけでもなく、先達の研究を調べるわけでもなく、自分の能力を高めるわけでもなく、ただ、目新しいことに挑んでは当然のように跳ね返され、焦りから近道を探し、悪循環に陥る。 研究所内で、(今にして思えばほぼ八つ当たりな)相談したり、W
昨今の状況だけでなく、多様な働き方やコミュニティ(とそこで得られる情報)に接する機会を増やすためにも今後、オンライン勉強会は広がっていくと思います。 Fukuoka.goでも今回、初めて勉強会のオンライン配信を実施しました。 同様のモチベーションを持つイベントの主催者に向けて、勉強会をオンライン配信するためにやった最小限の環境構築についてまとめておきます。 想定する環境 オンライン勉強会には、Google Hangouts Meetなどのビデオ会議のWebサービスとYouTubeライブ配信を用います。 勉強会には、配信を行う運営者、発表を行う登壇者、発表を聞く参加者がいるとします。 登壇者はビデオ会議の画面共有によって各々のPCから発表を行います。 運営者はビデオ会議の画面と音声をYouTubeでライブ配信します。 参加者はYouTubeのライブ配信を視聴、必要に応じてコメントします。 ビ
7/24から27にかけてアメリカ、サンディエゴで開催されたGopherCon 2019で人生初となる海外カンファレンスに登壇してきました(発表の様子はこちらにまとめました)。 GopherConはGo関連で最大級の国際カンファレンスです。 6年目となる今年は世界中から1,800名のGopherが参加し、200名以上の応募の中から選ばれた36名がスピーカーとして登壇しました。 その中で、僕は「Optimization for Number of goroutines Using Feedback Control」というタイトルで45分のチュートリアルセッションを務めました。 これまで海外カンファレンス登壇経験はなく、英語にも不慣れであるものの、現在の自分にとって非常に重要な位置付けのイベントであり、1月のCfPから7月の発表に至るまでの長丁場を非常に高い優先度で取り組んできました。 これらの
7/24から27にかけてアメリカ、サンディエゴで開催されたGopherCon 2019で人生初となる海外カンファレンスに登壇してきました。 GopherConはGo関連で最大級の国際カンファレンスです。 6年目となる今年は世界中から1,800名のGopherが参加し、200名以上の応募の中から選ばれた36名がスピーカーとして登壇しました。 今回のGopherConではPre-Conference Workshopと呼ばれるカンファレンス前日に終日行われるワークショップと、カンファレンス期間中に行われる25分のキーノートセッション、そして45分のチュートリアルセッションがありました。 その中で、僕は「Optimization for Number of goroutines Using Feedback Control」というタイトルで45分のチュートリアルセッションを務めました。 動画 ス
7/13にGo Conference'19 Summer in Fukuokaを開催した。 諸々落ち着いたので、初めて200名規模の大きなカンファレンスを開催するまでに駆け抜けた日々を振り返っておく。 準備 Fukuoka.goの主催の一人としてGoConの福岡開催は是非ともやりたい気持ちがあり、Go Conference 2018 Autumnで登壇した際の懇親会で盛り上がったのが去年の11/25。 11/30にFukuoka.go運営でやっていきのIssue起票。 12/04に会場と時期のおおまかなあたりがついたので正式にGoCon地方開催を東京GoCon運営に打診。 12/14に企画書を元に関係者に一通り話しが通った状態へ。 と良い感じのスピード感で進み出し、後は運営スタッフ一同で 1月はマスコットのデザインやらLPの準備やら 2月はGo1.12のリリパでイベント開催を初めて告知。G
上期も昨年度から引き続き研究開発に従事した.これまでやってきたいくつかの研究が繋がり始めて"なめらかなマッチング"というおぼろげながら大きな研究テーマが見えてきたように思う. 推薦システムに代表されるような要望と提案のマッチングをなめらかにするためには,マッチング観点からの研究と,それをサービスとして的確かつ即時に提供できるような実装や導入の観点からの両方が必要であり,マッチングを支える仕組み全体に対する研究を進めていきたいと考えるようになった. また,上期はこのテーマに基づく各研究内容を実装するにあたって技術的な深堀りを進めることができたこと,継続してアウトプットを続けることができたのも良かった. マッチング観点からは消費者行動や情報探索プロセスも考慮しながら検討している.実装面からは,近似近傍探索を高速かつ高精度に提供するためにSannyやSmux,go-avxなどこれまでよりレイヤを
このエントリは、第二回 Web System Architecture 研究会 (WSA研)の予稿です。 はじめに ECサイトの商品種類増大に伴う情報過多問題を解決するため,利用者の要求を満たす商品を自動的に提案する機能がECサイトにとっての関心事となる.商品の提案は任意の観点での商品同士の類似性を根拠とすることから,商品の特性を数値化し,任意の距離空間で近傍に位置する要素を求めることで,機械的に扱えるようにする.この数値化された商品特性を特徴量と呼ぶ. 深層ニューラルネットワークの発展によって,これまで適切な特徴量を導くことが難しかった画像やテキストに対しても,人の感性に近い,特性をよく表現する高精度な特徴量を得られるようになったことからECサイトの商品提案機能に利用され始めている. これらの深層ニューラルネットワークから得られる特徴量は,数百から数千次元の高次元ベクトルとして表現される
サーバ間で分散処理を行う際の相互通信におけるボトルネックを解消するため,smux(Socket multiplexer)を開発している. サーバ間の相互通信におけるボトルネックとその解決策 一対のサーバ間で多数のリクエストとレスポンスが送受信され,信頼性の高い通信としてTCPを利用する場合,コネクション確立のオーバーヘッドを排除するために接続の再利用が行われる.しかしながら,クライアントは送信に対する受信を待つ必要があるため,レスポンスまでに幾許かの処理時間を要する状況では送信のキューがたまってしまう.そこで複数の接続を利用することでこれを解消する方法が取られるが,追加の接続はリソース使用に関するオーバーヘッドを発生させてしまう.なにより各接続におけるレスポンス待ち時間は依然として解決しておらず,接続の利用面から見て非効率である.そこで,単一の接続において,仮想的に並行送受信を行う方法が提
推薦システムにおける被推薦者の文脈把握に向けて確率的な手法での行動分析を検討している.そこで,データマイニングによる異常検知で紹介されていたオンライン外れ値検出エンジンであるSmartSifterの理解を深めるため実装してみた. SmartSifter On-line Unsupervised Outlier Detection Using Finite Mixtures with Discounting Learning Algorithms. This method is proposed by Yamanishi, K., Takeuchi, J., Williams, G. et al. (2004) refs: http://cs.fit.edu/~pkc/id/related/yamanishi-kdd00.pdf SmartSifterはデータの発生分布が時間とともに非定常に
今期の論文執筆に着手しながら相変わらず上手く書けていなかったのだけれども,自分をある論文生成モデルの実行基盤だと考えると歯車が回り出した気がしたので書いておく. 今回考えた論文生成モデルはこんな感じ. ここで,p^tは入力xに対して出力されるt時点の論文内容である.入力xはt-1時点の論文とV(バリュー.研究成果),S(サーベイ)とする. なお,fはGANのようなDiscriminatorとGeneratorを持つ生成モデルであり,実行基盤の特性上,Generatorは常にDiscriminatorよりも低精度である. 実際は執筆,推敲を意識して役割分担しながら短いサイクルで繰り返すだけではあるが,以下のように執筆行為を捉えることで執筆時の心理的負担を減らすようにしている. 以下,本モデルの詳細と利点について述べる. 従来の執筆時は二つの役割を同時に実行していた 基本的に論文執筆は難しいも
2017年が終わる。今年は大いに迷った年だったと思う。 これまで携わってきたサービス運用開発から念願の研究所に移動になった僕はとにかく意気込んでいた。最初の半年間は、研究と開発が一体となって事業を差別化する技術を作り出すという研究所のミッションに従い、サービス開発の経験を生かして、現場の課題を解決する技術を習得し、導入することで実際に成果を上げていった。研究報告という形で査読なしではあるものの論文を2本書いた。2017/05,2017/06 研究員になって一番変わったことは、結果を論文をまとめる工程が発生したことだ。これまで技術ブログやOSSという形で成果物を発表してきたが、論文にまとめるのは難易度が違った。Wikipediaによれば研究の目的とは 突き詰めれば新しい事実や解釈の発見 であり、それゆえ、成果に対して、新規性、有用性を論文という形で示す必要がある。僕の場合、この新規性の部分に
このエントリは、第一回 Web System Architecture 研究会 (WSA研)の予稿です。 1. はじめに ブロックチェーン技術の登場により、インターネットを経由した個人間での直接の価値交換が容易となりつつある。 これまで、インターネット上での個人間での価値交換の場を提供してきた、マーケットプレイス型のECサイトや、シェアリングエコノミーの代表である、AirbnbやUberは、一旦情報を集約し提供する仲介者としてのビジネスを行ってきた。これらのビジネスはニーズのマッチングと取引の信頼性の提供の二つの側面で価値を提供している。一方、ブロックチェーンは、非中央集権的な台帳管理をトランザクションの順序性を明確にするデータ構造とブロック生成と検証に系が正しく回るような仕組みを組み込むことで、信頼性の提供を実現する。このように中央集権的な存在を介さないブロックチェーン上で動作するBit
著者の@tkengoより『やさしく学ぶ機械学習を理解するための数学のきほん』をいただきました。ありがとうございます。 本書は、機械学習の基本を会話形式で学びながら、都度必要となる数学の知識を得ていく構成となっています。丁寧に噛み砕いて説明されており、機械学習に興味があるけれども数式に苦手意識がある人や、ニューラルネットワークのライブラリを使いこなすために、その技術背景を基礎の基礎から学び始めたい人などにオススメではないかと思います。 いわゆる文系の人が数学の補助輪を外すために読む本 僕はこの本を機械学習の勉強に特化したものだとは思っていなくて、公式を覚えただけだった高校の数学を、目的のために使いこなす数学という道具であると認識しなおすための本だと思っています。 僕はちょうど1年半ほど前に機械学習を学ぶために高校の参考書を使って数学を勉強しなおしました。ところがいざ論文どころか機械学習系の技
画像内の物体検出と識別を行う予測APIが必要になったので、物体検出ニューラルネットワークであるSSD: Single Shot MultiBox DetectorをGoogle Cloud ML Engine上で訓練して予測APIとして使えるようにしました。 使い方 Google Cloud ML Engineでモデル、学習時のパラメタ、予測APIのバージョンなどをコード管理するため、StarChartを使います。 コード管理が不要であれば、リポジトリのコードをCloud Storageにアップロードしてgcloudコマンドなどで訓練を行ってください。 訓練データセットなどをCloud Storageに配置した上で、以下のようにして訓練用のジョブを投入します。 $ pip install git+https://github.com/monochromegane/starchart.git
ペパボに入社したのは確か2012年の10月だったと思うので、かれこれ丸4年が経ったことになる。 転職のきっかけは、新卒で入社した地元の会社での業務の出張の多さと技術面の軽視が自分の考える働き方と合わなくなったからだった。とにかく技術でやっていきたいんだという気持ちはありながらも、その気持ちを消化できる企業がどんなものか分からず、悶々と転職サイトを見ていた気がする。ある日、福岡 おもしろい it 会社 みたいに思考停止甚だしい検索をして、まとめサイトに辿り着き、自社でWebサービスを運営している会社への転職というのが視野に入った。今にして思えばもっとよい探し方があったと思うが、新卒で1社しか見てないあの頃はとにかく世界が狭かった気がする。ともかくそのまとめサイトにあるおもしろい会社を上から順に調べていって当時のpaperboy&co.に行き着いた。 当時、福岡基盤チームを立ち上げていく時期で
著者のお一人、@songmuさんより、『みんなのGo言語【現場で使える実践テクニック】』をいただきました。ありがとうございます。 現場で使える実践テクニックのタイトル通り、Go言語界隈の有名人が様々なテクニックを紹介してくれています。自分もGo言語が好きでよく書いていますが、書き始めた当時に試行錯誤しながら身につけてきた知識、テクニックが簡潔にまとまっており、文法を一通り覚えた初学者にとって学習効率が非常に高い本ではないかと思います。 第1章 Goによるチーム開発のはじめ方とコードを書く上での心得 Go言語を快適に書くための開発環境の準備から、Goらしいコードを書くまでが簡潔にまとめられています。main.goだけのプロジェクトから卒業するときに悩むところが網羅されており、A Tour Of Goのあとに、みんなのGo言語 1章を読むまでを入門としてよさそうです。 また、この章で拙作の(d
8/6に開催されたプログラマのための数学勉強会@福岡#5で「Goによる勾配降下法 -理論と実践-」を発表してきました。 今回は勾配降下法にフォーカスした内容となっています。機械学習というブラックボックスが実は誤差を最小化するものであり、そのために勾配降下法というアプローチがある、という基本でもあり、数式に抵抗があると最初につまづく箇所でもあります。 今回は数式と図解に加え、Go言語によるサンプル実装も添えることでプログラマへも理解しやすくなるように資料を作ってみました。 また、勾配降下法の手法だけではなく収束速度の改善や学習率の自動調整といった最適化の手法も紹介しているので、基本を理解している人もよければ御覧ください。 サンプル実装 発表で使ったサンプル実装はこちらで公開しています。 正弦関数を元にしたトレーニングセットに対して多項式回帰を行うことができます。 このような感じで各種勾配降下
静的データをActiveRecord的に扱えて便利なActiveHashですが、ページングとライク検索が必要になったのでgemをつくりました。 ページングを行えるようにする active_hash-kaminari と、 ライク検索を行えるようにする active_hash-like です。 active_hash-kaminari ページングを行いたいActiveHashのクラスにPaginatableモジュールをprependします。 class Country < ActiveHash::Base prepend ActiveHash::Paginatable ... end
Treasure Dataに収集したデータを集計・出力するためにジョブをスケジュール登録するにあたり、ブラウザコンソールやAPIから直接行うと履歴管理やレビューができないといった課題を解決するために Pendulum というgemをつくりました。 PendulumはDSLで記述された定義に従い、Treasure Dataのスケジュールジョブを管理します。 定義ファイルをGit管理することで、履歴管理やGitHubと連携したコードレビューが可能になります。 余談ですが、Pendulumは振り子という意味で、定期的な実行という意味と宝探しのダウジング的な意味から連想しています。ペンデュラム。響きがカッコイイ。 使い方 Schedfileという名前で定義ファイルを用意して、 schedule 'my-schedule-job' do database 'db_name' query 'selec
ngx_mrubyでHTTPリクエストに対して非同期処理をしたかったので、mruby-sidekiq-clientという mrbgem をつくりました。 mrubyからSidekiqのジョブ形式でRedisに非同期ジョブを登録し、別途用意したSidekiqのサーバーが登録されたジョブを捌いていくという方式です。これにより、非同期処理は通常のRailsやCRubyのコードで書くことができ、mruby側の処理はシンプルに保つことができます。 使い方 RailsなどでSidekiqを使っている方にはお馴染みのやり方です。 1. 非同期ジョブにしたいWorkerクラスを定義します
去年も相変わらずGoを書いたり、ブログ書いたり、発表したり勉強会開催したり、自分のペースで自分の楽しいことをやってきたし、ふりかえってみれば、自分なりにそれらしい量もやれたかなとも思うけど、どうしても一昨年からの漫然と続く楽な活動であったと言われれば否定はできない感じがあった。活動の前提が個人の枠を超えていない。Go書いたりブログ書いたりも個人の小さな承認欲求を満たしたいだけなのでどうにもつまらんなあという感じ。 個人活動は非常に楽である。自分の好きなときにつくって公開して、たまに褒められてニヤリとして、また次をつくる。当たらなくても趣味なのでという言い訳が自分に立つ。なんと楽なことか。アウトプット最高! そう、アウトプット最高なのだ。個人のアウトプットをキッカケに色々なところで知ってもらえて、つながりができていく。アウトプットでスキルが洗練される。ペパボに入る前はこういうことが喜ばれる環
仕事 今年は7月頃に2年ほど携わっていたチームから異動して新しい環境になったのが一番大きな変化だった。異動前にPHPバージョンアップを成すことができたし、新しいチームでは新機能開発しながらも技術的な課題がサービスの発展を妨げることのないよう、継続的な改善ができる体制を取ることができた。今のチームは最高で、お互いに敬意を払いながらも得意領域で活躍し、不足しているところを補い合えているんじゃないかと思う。ただ、チームとしての成熟は変化に反応するための柔軟性を失う可能性も含んでいるので、新しい目標、例えば新しい技術への挑戦とか持っている技術の深掘りとかお互いを刺激し合える環境というのをつくっていきたいなあと思う。 技術 2014年から引き続きGo言語一色の年になった。Top Go GitHub developers in Japanで3位に位置付けられてるのは素直に喜びたい。当たるか当たらないか
goimportsはコードのフォーマットに加えてインポート行の追加・削除を行ってくれる便利なコマンドですが、GOPATH配下に大量のリポジトリが存在するとインポートの解決に時間がかかるようになってしまいます。いつでも素早くインポートしたい!ということでdragon-importsというコマンドをつくってみました。 使い方 インストールしてdragon-importsコマンドを実行するだけです。
次のページ
このページを最初にブックマークしてみませんか?
『THINKING MEGANE』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く