タグ

ブックマーク / tech.preferred.jp (22)

  • 100倍で考える - Preferred Networks Research & Development

    私が最近強く印象に残った言葉が10倍で物事を考えるです[wired]。 これが私の記憶の中で拡大解釈され、今は100倍で物事を考えるようになっています。 「100倍」というのは一見すると不可能なことの例えのように思えますが、決してそんなことはありません。 どの程度現実的か例をあげて考えてみましょう。 DWH(DBと考えても良いです)という分野を考えてみます*1。 *1 この分野は専門家ではないのであくまで外から見ている素人の意見です。 2014年10月現在 Google BigQueryは1GBの保存に月あたり 約3円、クエリ時1TBスキャンあたり500円という価格設定です。基的なDBの操作は全部できて、その上でユーザーが自由に関数を定義できて、画面とつながって結果が数十秒で返ってきてです。これはこの分野を知る人にとっては衝撃的な価格です。 1昔前、DWHの世界では製品が数千万から数億円

    100倍で考える - Preferred Networks Research & Development
  • 技術を実用化する - Preferred Networks Research & Development

    論文の最後に「この技術はこれから様々な場面で役に立つだろう」と書いてあるのを読んだり、実際に書いた人がいると思います。研究者の視点からは「十年に一度のすごい発見が起きた」場面に出くわし、世の中にどのような影響を与えるのだろうと思うこともあります。しかし殆どの技術は世の中で活かされることはありません。なぜなら技術を実用化するには非常に多くの困難が必要とされるからです。 そもそも、殆どの技術は誕生したとしても人の頭に留まっています。ものすごくいい手法を思いついた、としてもそれを言語などで外在化させない限り、その技術がその人以上に世の中に広まることはありません。有名な例でBurrows-Wheeler変換という今のゲノムシーケンシングを支える技術はWheeler氏が「あまりにも当然である」ことから論文化していませんでした。Burrowsの勧めでこの技術はDECの社内報として発表され、現在のように

    技術を実用化する - Preferred Networks Research & Development
  • 異常検知の世界へようこそ - Preferred Networks Research & Development

    比戸です。 先週Jubatusの最新0.4.0がリリースされましたが、外れ値検知機能の追加が目玉の一つとなっています(jubaanomaly)。昨年PFIへ入社して初めて手がけた仕事が公開されたということで感慨ひとしおですが、便乗してあまり語られることのない異常検知の世界について書きたいと思います。以下の資料は昨年のFIT2012で使ったものです。 異常検知とは簡単にいえば、「他に比べて変なデータを見つけ出す」タスクです。お正月にテレビで繰り返し流れた、おすぎとピーコのCM(*1)がわかりやすいイメージですね。機械学習の枠組みで言えば”教師無し学習”に属します。分類や回帰、クラスタリングなど応用も多く人気も研究熱も高いタスクに比べると、マイナーです。SVMとか、Random Forestとか、Boostingとか、最近だとDeep Neural Networkとか、有名な必殺技アルゴリズム

    異常検知の世界へようこそ - Preferred Networks Research & Development
  • 数学に近い分野の情報収集 - Preferred Networks Research & Development

    はじめに 大野です。今回は数学に関する情報入手方法について、自分が知っている範囲でお話をしようと思います。特に4月に大学や大学院に入学した方や、数学の勉強を始めたいけれど何から始めればよいかわからないという方などを想定して紹介していこうと思います。 数学に限らないかもしれませんが、勉強をしようとすると解決すべき問題が色々と生じます。 そもそも文献(・講義録・雑誌)はどこにあるのか 文献はあるけれど、どれから調査・勉強を始めればよいか 勉強を始めたけれどわからなすぎる。誰かに質問したいけれどどこで聞けば良いのだろうか 以下では大体この流れに沿って情報源などを紹介していこうと思います。 文献を探す 図書館 私の地域の公共図書館は比較的数学が充実しており、数学もよく借りています。どの分野でも専門書は通常のよりも高額で、購入するのに躊躇するかもしれません。ですので、まず試しに図書館

    数学に近い分野の情報収集 - Preferred Networks Research & Development
    nsyee
    nsyee 2012/05/18
  • Interaction Design向けのC++ライブラリ "pocode" - Preferred Networks Research & Development

    祢次金です。 今回はC++で書かれたオープンソースなライブラリ、pocodeを簡単にご紹介します。 pocodeはPotion社によって設計された、主にインタラクションデザインのためのライブラリであり、プラットフォームとしてはWindowsMacOS(Lion)、iOSに対応しています。オープンソースとして公開されたのは最近ですが、既にいくつかのプロジェクトで利用実績があるようです。 ブログでも何度か触れているCinderやopenFrameworksと違うのは、描画したいオブジェクトをシーングラフに追加して管理する点です。pocodeではこのオブジェクトはpoObjectと呼ばれていて、このpoObject単位で各種イベントに対するハンドラを設定することもできます。FlashでいうSpriteのようなものです。 例として、pocodeに同梱されているサンプルから、あるParticle

    Interaction Design向けのC++ライブラリ "pocode" - Preferred Networks Research & Development
  • エラー処理を書いてはいけない - Preferred Networks Research & Development

    昨日セミナーとして USTREAM させていただいた資料を公開いたします。 エラー処理を書いてはいけない USTREAMのビデオ タイトルは釣り気味ですが、内容はいたって真面目なのでご安心ください。 概要 やってはいけないシリーズ、の第三弾としての試みです。 リソース管理をしてはいけない ロック処理を書いてはいけない エラー処理を書いてはいけない ← New! タイトルに反して(あるいはタイトル通りに)、正しく長時間動作するプログラムを書くには きちんとエラー処理を行う必要がありますが、 それを何とか抽象化しようという(Haskell界隈での)試みについてのご紹介でございます。 あまり他の人がこういうことを言っているのを聞いたことが無いので、 自分の日々考えていることを世に問うた形になっております。 実際のところ、社内ではC++がメインに使われておりますので、 こういう手法が用いられている

    エラー処理を書いてはいけない - Preferred Networks Research & Development
  • EaselJSでインタラクティブなグラフを描こう - Preferred Networks Research & Development

    先日、paper.jsによるグラフ描画について触れましたが、今回はflashのようにcanvasを使うことのできるJavascriptライブラリ「EaselJS」を使ったグラフ描画について少しご紹介したいと思います。 EaselJSでは、ShapeやBitmapTextといったDisplayObjectをStageにaddChildしてディスプレイリストを作ることで、Stageに紐付けられたcanvasにその内容が描画されます。 ActionScriptに慣れている開発者には馴染みやすいやり方です。onClickなどのイベントハンドラもDisplayObjectごとに設定することができ、アニメーションも勿論可能。 <!DOCTYPE html> <html> <head> <script type="text/javascript" src="easel.js"></script> <s

    EaselJSでインタラクティブなグラフを描こう - Preferred Networks Research & Development
  • モダン並列・並行プログラミング ~ Concurrent Revisions による実装と現実 ~ - Preferred Networks Research & Development

    日社内向けのTechTalkにて、並列・並行プログラミングに関する話を行いました。 昨今、プログラムの並列化はなくてはならないものとなっています。しかし、そのプログラミング環境は依然としてロックを用いたものが主流です。今回の発表の主張を端的に申し上げますと、 “Locks must go!” ということになります。並列プログラミングに銀の弾丸はありません。しかし、ロックは別の何らかの安全性を確保したプログラミングモデルで置き換えられなければいけません。そうでなければ、再現しにくいバグに苦しめられ、終電を逃す日々と決別することはできないでしょう。また、ロックによるプログラミングの抱える質的問題にも言及しています。 この界隈の最新の動向として、去年OOPSLA’10にて発表されたConcurrent Revisionsについての解説も行なっております。また、弊社研究開発において、先日Con

    モダン並列・並行プログラミング ~ Concurrent Revisions による実装と現実 ~ - Preferred Networks Research & Development
  • Simon Peyton Jones先生招待講演について - Preferred Networks Research & Development

    村主です。 2011年9月21日に、ICFP2011で来日していたSimon Peyton-Jones先生を弊社にお招きして、Glasgow Haskell Compilerの最新事情について講演をしていただきました。当日は体が浮きそうなほどの風が吹く大嵐でしたが、多くの人の協力のおかげで無事に終えることができ、感謝しています。 サイモン先生からスライドを分けてもらったので、講演会の動画とあわせて読む形で、記事にまとめてみました。Haskell/GHCのさまざまなトピックをカバーするこの講演、みなさんのHaskell勉強の一助となれば幸いです。 サイモン先生に「君たちも何か話してよ」と頼まれたので、僕が流体計算言語Paraiso(リンク先にスライドあり)の話をまずしています。 31:46 頃からサイモン先生のトークが始まります。まずはHaskell Communities and Acti

    Simon Peyton Jones先生招待講演について - Preferred Networks Research & Development
  • Jubatusを公開しました - Preferred Networks Research & Development

    先日、NTTと共同研究開発したJubatusを公開しました。 OSSで公開されてますので、興味がある方は使ってみるなり、ソースコードを眺めるなり、できればプロジェクトに参加していただけたらと思います。 Jubatus(ユバタス)は、大規模分散上でリアルタイムで機械学習を行うためのフレームワークです。 このプロジェクトは元々、機械学習やデータ解析が好きなPFIと、ネットワークやシステム運用実績が豊富で技術力があるNTT情報流通プラットフォーム研究所と組んで何かできないかということで始めました。 「大規模分散」+「リアルタイム」+「深い解析」という三つの特徴を持った上でデータを分析するためにどのようなアーキテクチャが考えられて、その上でどのような解析ができるのかというのを日々試行錯誤して作っています。 今回はリリース第1段ということで、手法としては分類(教師有学習の多クラス分類)に絞ってOSS

    Jubatusを公開しました - Preferred Networks Research & Development
  • 高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development

    先日、TimSortというソートアルゴリズムが話題になりました。TimSortは、高速な安定ソートで、Python(>=2.3)やJava SE 7、およびAndroidでの標準ソートアルゴリズムとして採用されているそうです。 C++のstd::sort()よりも高速であるというベンチマーク結果1が話題になり(後にベンチマークの誤りと判明)、私もそれで存在を知りました。実際のところ、ランダムなデータに対してはクイックソート(IntroSort)ほど速くないようですが、ソートというシンプルなタスクのアルゴリズムが今もなお改良され続けていて、なおかつ人々の関心を引くというのは興味深いものです。 しかしながら、オリジナルのTimSortのコードは若干複雑で、実際のところどういうアルゴリズムなのかわかりづらいところがあると思います。そこで今回はTimSortのアルゴリズムをできるだけわかりやすく解

    高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development
  • STL風に使えるマップ型コンテナの紹介と性能比較 - Preferred Networks Research & Development

    最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリをわない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designというの作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ

  • MapReduce以外の分散処理基盤BSP, Piccolo, Sparkの紹介 - Preferred Networks Research & Development

    どうも,実は今年から開発チームにjoinしていた中川です.可愛い犬の写真がなかったので,可愛いマスコットの画像を貼っておきます. 最近MapReduceとかその実装であるHadoopとかをよく聞くようになりました.これはつまり,それだけ大量のデータをなんとか処理したいという要望があるからだと思います.しかし当たり前ですが,MapReduceは銀の弾丸ではありません. ということで,最近気になっているMapReduceとは違ったアプローチを取っている分散処理基盤について,社内のTechTalkで話した内容を簡単にまとめて紹介したいと思います. Bulk Sychronous Parallel このアルゴリズム自体は1990年に誕生したものです.長いのでBSPと書きます.さて,グラフから最短経路を求める時,MapReduceは使えるでしょうか?このような論文が出るくらいですから出来ないことはあ

    MapReduce以外の分散処理基盤BSP, Piccolo, Sparkの紹介 - Preferred Networks Research & Development
  • 最近のtrieの話(xbwなど) - Preferred Networks Research & Development

    ブログの更新がとまっていましたが、また少しずつ更新してきたいと思います。 今回はtrie(トライ)の最近の話をしたいと思います。 trieはキー集合を扱うためのデータ構造の一種です。例えば、単語集合からなる辞書であったり、クロールしたURL情報を扱ったり、最近だと、KVS(Key Value Store)のようにキーを介してデータを保存、読み込みをしたりと様々な場面で利用されます。 同じようにキー集合を格納するデータ構造としてハッシュを利用する方法があります。キーからハッシュ値を計算し、その場所に文字列へのポインタを格納しておくデータ構造です。ハッシュを利用した場合とtrieを利用した場合の一番の大きな違いは、trieの場合だと、ある文字列から始まるキーを全て列挙する、いわゆる接頭辞探索ができることです。例えば”te”で始まる文字列を網羅的に調べることができます。木をたどって、”te”の下

    最近のtrieの話(xbwなど) - Preferred Networks Research & Development
  • Enumerator Package - Yet Another Iteratee Tutorial - Preferred Networks Research & Development

    バレンタインチョコ欲しい! 田中です。 Iterateeの素晴らしいチュートリアルを見つけたので、今回はその翻訳をお届けしようと思います。以前、The Monad Reader Issue 16 のiterateeの記事をベースにした解説記事を書いたのですが、こちらの記事はかなり概念的なところから始まり、結構天下り的にiterateeの定義を受け入れていたのに対して、こちらの記事は、一貫して具体例からの抽象化で話が進み、また易しく書かれているので、比較的理解しやすいと思います。また、実際の実装に即して解説されていますので、読み終えて即実際に使ってみることが出来るでしょう。 このチュートリアルを書かれたMichael Snoymanという方は、現在YesodというHaskellのWebフレームワークを精力的に開発されています。Yesodには実際にiterateeがふんだんに用いられており、そ

    Enumerator Package - Yet Another Iteratee Tutorial - Preferred Networks Research & Development
  • wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development

    こんにちは岡野原です。もう年末になりましたが、私の今年はこれからです。 wat-arrayというC++ライブラリを公開しました。 google code:wat-array wat-arrayはフリーソフトウェアであり、修正BSDライセンスに基づいて利用できます. wat-arrayはwavelet木と呼ばれるデータ構造を利用することにより、配列上の様々な処理を効率的に行うことができるC++ライブラリです。 例えば、 – 任意の連続した範囲内にある最大値 /最小値 / k番目に大きい値, またそれらの出現位置、頻度 – 任意の連続した範囲内にある指定した文字cの出現回数、c未満/より大きい文字の出現回数 – 任意の文字のi番目の出現位置 といったものを求めることが全て範囲長、入力長に対して定数時間で行うことができます。 例えば長さ10億、値の範囲が0から1000万であるような配列A中のA[

    wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development
  • CinderでiPadアプリを実装してみた - Preferred Networks Research & Development

    X’masが刻一刻と迫っています。祢次金です。 前回、「クリエイティブなC++ライブラリ “Cinder” の紹介」と題して、Cinderをご紹介しました。今回はそのCinderを使って、iPad上で動作するパーティクル生成アプリケーションを実装してみたいと思います。 前回同様、環境はMacOSXを想定し、iOS SDKのバージョンは4.2、iPadのiOSは4.2.1とします。 なお、旧バージョンのiOS SDKの場合、iPad simulatorではFrameworkのリンクに一部失敗しているようで、うまくアプリケーションが起動しませんでした。旧バージョンでビルドしたものでも実機では問題なく動作しますが、実装される場合は最新SDKの利用をおすすめします。 雛形の作成と修正 TinderBoxを使ってプロジェクトの雛形をつくります。名前を “TouchTest” とし、Targetは “

    CinderでiPadアプリを実装してみた - Preferred Networks Research & Development
  • クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development

    こんにちは、人恋しい季節になってきましたね。 研究開発チームの祢次金(@nejigane)と申します。 エントリではCinderというクリエイティブなコーディング向けのライブラリについてご紹介したいと思います。 Cinderとは Cinderとは、画像、音声、動画等を簡単に処理&可視化できる、主にビジュアルデザイン向けの強力なC++ライブラリであり、The Barbarian GroupのAndrew Bell氏が中心となってオープンソースとして開発が進められています。 同様の思想を持つProcessingやopenFrameworksによく似ており、C++で簡単に記述できるうえ、WindowsMacOSX、iOS(iPhone/iPad)といった複数のプラットフォームをカバーしています。 細かい機能/特徴の紹介は家サイトに譲るとして、Cinderを極めるとどのぐらいクリエイティブな

    クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development
  • 劣微分を用いた最適化手法について(1) - Preferred Networks Research & Development

    みなさん、こんにちは。もしくははじめまして。研究開発チームの徳永です。 とんかつ教室のロースおじさんぐらいにぶっとんだブログを書いていきたい、そういう情熱をもって僕はこのエントリを書きはじめました。しかし、現実は厳しく、そのようなエントリを公開してしまうと、2日後ぐらいには僕の机がオフィスからなくなっていそうな気配が濃厚になってきています。そこで今日はおとなしく、最適化と機械学習の関係について、みたいなところを書いていきたいと思います。なお、タイトルにもありますが、このシリーズでは最終的には劣微分を用いた最適化手法の論文をいくつか紹介したいと考えています。 情報科学における最適化問題というのはいろいろな種類があります。最適化問題っていろんなのがあるんやねー、みたいなところに興味がある人は、wikipediaとかで確認してください。最近、機械学習と呼ばれる技術がいろいろなところで使われるよう

    劣微分を用いた最適化手法について(1) - Preferred Networks Research & Development
  • Googleの並列ログ解析向け言語「Sawzall」が公開されたので使ってみた | Preferred Research Blog

    最近光麺にハマっている太田です。 グーグル、分散処理のためにデザインされた言語「Sawzall」をオープンソースで公開 ? Publickeyで紹介されている、並列ログ解析向け言語「Sawzall」を試してみました。動かし方のドキュメントが少なかったので、紹介エントリを書いてみます。 プロジェクトページ ドキュメント Sawzallについては、5年前に論文が発表されており一部概要を知ることは出来ましたが、先日実装がオープンソースで公開されました。論文の第一著者はUNIXやPlan9の開発者で知られるRob Pike氏です。 Interpreting the Data: Parallel Analysis with Sawzall MapReduceのOSS実装として「Hadoop」が良く知られていますが、Hadoop向けの言語としてはHiveやPig等が有名です。 Hive: MapRed

    Googleの並列ログ解析向け言語「Sawzall」が公開されたので使ってみた | Preferred Research Blog