トップへ戻る
カレーが食べたい
qiita.com/icoxfog417
2019/12/5、PFNからChainerの開発を停止しPyTorchの開発に貢献するというアナウンスがありました。 Preferred Networks、深層学習の研究開発基盤をPyTorchに移行 オフィシャルな発表が出たことは衝撃的でしたが、心の中で「いつかはこうなるんじゃないか」という思いがあったのも事実です。さびしくはありつつも、決断にはベストな時期だったのではないかと思います。ここ最近は動的グラフをサポートしたTensorFlow 2.0の公開があり、機能的にほぼ差異がなくなった2大フレームワークの決戦がいよいよ始まる・・・という雰囲気です。そんな中でのChainer開発合流のニュースは十分存在感が出る時期ですし、PyTorch陣営としてもありがたかったのではないかなと思います(積まれているIssue/PRもTensorFlowより多いですし)。 本記事では、Chainerへ
迫る年の瀬、寒いのは冬のせいか、懐のせいか、・・・ なにかと灰色の心持ちになるこの季節、ほのかなマッチにも似たアプリを作成しました。1 Clickで上場企業の役員になれるアプリです!その名も「エグゼクティブ・ボタン」。↓の画像をクリックすると起動します。 エグゼクティブボタンのここがすごい! ボタンを押すだけで上場企業の役員報酬が手に入る!! エグゼクティブボタンのここがクソ! ほんとには手に入らない!! 実装はこちらです。 上場企業の役員報酬 2019年から、ガバナンス開示の一環として役員報酬などが公開されるようになりました。具体的には、有価証券報告書などの上場企業に義務付けられている開示文書へ記述するようになりました。 さらすのもはばかられますが、弊社の役員報酬は以下のようになっています。 一人頭4000万くらいですね。ふむ、なかなか・・・(あいまいな笑み)。この値は、PDFから読み取
21世紀でもっともセクシーと言われるデータサイエンスは、18世紀を彷彿とさせる奴隷的な作業によって支えられています(要出典)。その作業とは、データを作る作業(=アノテーション)です。多くの場合、アノテーションは孤独な単調作業の繰り返しです。延々と続けていると、全ての単語にunkとつけるようになる事例も報告されています。つまりつらい!のです。 本記事では、「孤独で辛い」アノテーションを「みんなで楽しく」行える環境を作る方法を紹介します。そのポイントは以下3点です。 Easy: アノテーションを楽に Feedback: アノテーションした結果がすぐにわかるように Gamification: アノテーション結果をみんなで競い合う Overview アノテーションを行う流れは以下のようになります。 Annotation Tool for Easy: アノテーションを楽にするためのツールを用意 In
ひとりひとりに、心のこもったメッセージを届けたい。そんな機会が時々はあるでしょう。 思いを胸にハガキやメッセージカードに言葉をつづったあなたは愕然とするはずです。 Backspaceで文字けせねぇ Ctrl+Zで取り消しできねぇ なにより俺の文字汚すぎへん? 普段はいつでも修正可能な電子の世界に身をゆだね、ペンを握るのはAmazonの受け取りサインの時だけ!という生活を続ける俺たちに、紙とペンでしかも大切なメッセージをつづるのは、あまりに高度なタスクになりました。 そこで、技術の力でおもてなしの心を量産することにしました(発想が〇〇)。作成したアプリが以下になります。 (デモとして、今年引退した安室奈美恵さんのクリアファイルを使わせていただきました) おもてなされる側は、配布された台紙に印刷されたQRコードからアプリにアクセスする アクセスしてカメラの利用を許可すると、ウェルカムメッセージ
メリークリスマス。フレンズのいない家でファミチキを一人食べる寂しさに怯えてはいませんか? フレンズは待っていてもやってきません!外に出てフレンズを捕まえよう!そう思い立ち開発されたのが今回紹介するクソアプリ、「けものぷよ」です。 Special Thanks to けものフレンズ たのしいしくみ 外に出る 手持ちの携帯でフレンズを取る フレンズが落ちてくる フレンズが3つそろうと消える たのしー! (きえてしまってはフレンズが集まらないのでは・・・という指摘は受け付けません。かれらは夢のパークへいったのだと思います)。 たのしいアーキテクチャ 写真を撮る IFTTTで画像を転送 TensorFlow Object Detection APIでフレンズを発見する 物理エンジンでフレンズが落ちてくる たのしー! たのしいを実現するフレンズ TensorFlow Object Detection
いわゆる人工知能技術が巷をにぎわす昨今、人工知能を研究する部署/団体を設立するのがトレンドになっています。もちろん、部署の設立にはそれをマネジメントする人間が必要です。「その時」は突然やってきます。 「わが社でも人工知能技術を研究しビジネスに役立てるべく、新しい部門を設立することになった」 「はい」 「ひいては、君にその部門のマネジメントを任せたい」 「!?」 「将来的には100人規模にし3億円規模のビジネスにしたいと思っている(※)。まずは中期計画を作成してくれ」 「そ、それは・・・」 「部門設立のプレスリリースは来月発行される。よろしく頼むよ(肩ポンッ」 (※: 好きな数字を入れてください) (from 疾風伝説 特攻の拓) 本文書は、実際こうした事態が起こった時に役立つチェックリストとして機能するようにしてあります。具体的には、以下の構成をとっています。 設立編: 何を「目指す」の
「MeCabで形態素解析をして単語を抽出しましょう」とはよく見る文言ですが、いつから形態素と単語が同じものと錯覚していた?というお話です。 例として、「参考人を呼んだ」という文を形態素解析してみます。 普通の感覚では「参考人/を/呼んだ」になりますが、実際に形態素解析すると以下のようになります。 「参考/人」と「呼ん/だ」で切れています。つまり、私たちが認識する「単語」と実際の形態素は、一致する場合もあれば形態素がより細かくなる場合もあるということです。 「単語」としてのまとまり: 語の統語性 何を「単語」とするかは、発音的観点と文法的操作の観点の2つから考えられます。 発音的観点:同じ意味のまとまりとして一体として発音をするか 例えばニュースを読むとき、「事件の・参考・人」というよりは「事件の・参考人」という方が自然になる。 文法的操作の観点:単語としてまとまっている場合、その一部を取り
テキスト要約の評価には、一般的にROUGE(ルージュ)という指標がよく用いられます。これは、大まかには人間の作成した要約と、システムが作成した要約との一致度を測る指標です。 ただ、「一致度の測り方」には様々なバリエーションがあります。そこで、本記事では様々な「一致度の測り方」を体現するROUGEの兄弟達を紹介していきます。 (※図はイメージです。一つをベースにしたバリエーションという意味で、特に属性とかに意味があるわけではないです) ニューラルネットという強力なモデルが登場した最近の研究では、「最適化すべき指標」がしっかり定義できればそこそこ良い精度で問題が解けてしまう節があります。そのため、何を最適化すべきか、という点を定義することはよりその重要度を増しているとも言えます。 本記事では、実際にスコアを計測するためのライブラリについても紹介します。要約を作成する際には、ぜひ活用していただけ
パフォーマンスチューニングを行う際、改修前後で効果があらわれているか確認するのは重要です。Pythonにはデフォルトでパフォーマンス解析を行うモジュールが組み込まれているのですが、そのままではちょっと使いづらいく出力結果も見にくいです。そこで、簡易な記法で計測できる+結果の可視化を行うツールを作りました。 icoxfog417/pyfbi まず、実行結果(dump_statsなどで保存したファイル)を以下のようにグラフ・表で可視化できます。インストールするとpyfbi_vizというコマンドが使えるので、それでファイルを保存したディレクトリを指定すればOKです。改修前の計測、改修後の計測2つのファイルをフォルダに入れておけば前後の可視化が可能です。
さまざまなニュースアプリ、ブログ、SNSと近年テキストの情報はますます増えています。日々たくさんの情報が配信されるため、Twitterやまとめサイトを見ていたら数時間たっていた・・・なんてこともよくあると思います。世はまさに大自然言語時代。 from THE HISTORICAL GROWTH OF DATA: WHY WE NEED A FASTER TRANSFER SOLUTION FOR LARGE DATA SETS テキスト、音声、画像、動画といった非構造データの増加を示したグラフ そこで注目される技術が、「要約」です。膨大な情報を要点をまとめた短い文章にすることができれば、単純に時間の節約になるだけでなく、多様な視点から書かれた情報を並べて吟味することもできます。 本文書は、この文書要約(Text Summarization)についてその概観を示すことを目的として書かれていま
ディープラーニングは特定分野で非常に高い精度が出せることもあり、その応用範囲はどんどん広がっています。 しかし、そんなディープラーニングにも弱点はあります。その中でも大きい問題点が、「何を根拠に判断しているかよくわからない」ということです。 ディープラーニングは、学習の過程でデータ内の特徴それ自体を学習するのが得意という特性があります。これにより「人が特徴を抽出する必要がない」と言われたりもしますが、逆に言えばどんな特徴を抽出するかはネットワーク任せということです。抽出された特徴はその名の通りディープなネットワークの中の重みに潜在しており、そこから学習された「何か」を人間が理解可能な形で取り出すというのは至難の業です。 例題:このネットワークが何を根拠に猫を猫として判断しているか、ネットワークの重みを可視化した上図から答えよ(制限時間:3分) image from CS231n Visua
機械学習を利用する際は、データの前処理から始まって適切なモデルを選んでパラメーターを最適化して・・・というように多くの作業が伴います。 ただ、この作業の少なくない部分は定型的なものです。前処理でいえば、数値データに対しては正規化を行う、カテゴリー変数は0/1の特徴量へ変換する(ダミー変数化)、といった処理はどんな場合でもとりあえず実行する処理になります。 もちろん高度な特徴量エンジニアリングなどは話が別ですが、データがあったときに定型的な作業をさくっと行い、とりあえず基礎的なモデルでどれぐらいの精度が出るのかを見てみたい、というシーンはよくあるものです。 そこで、そんな作業を自動化するための仕組みを開発しました。名前はkaruraといいます。 chakki-works/karura コンセプトとしてはこの図のように、モデルを作るにあたっての定型的な一連の作業を自動化する、といったものです。
機械学習の基礎はそれなりに習得し、次のステップとして論文を読んでみたい、実装にチャレンジしてみたい、という方も多いのではないかと思います。 ただ、機械学習の論文といってもどこから読んでいいのか、興味がある論文を見つけるにしても英語のAbstractを眺めて行くのはちょっとつらい・・・という方のために、ポータルサイトを作りました。 arXivTimes Indicator 以前、機械学習に関わる論文の要約を共有するGitHubリポジトリとBotを作成したのですが、そこでの投稿内容をまとめて見ることができます。 ジャンル別に参照可能な他、 Pocketをお使いであればPocketへの登録も可能です。 arXivTimesは、機械学習の研究動向に関する集合知を形成することを目的としています(日本語で参照可能な)。 そのため、今回のポータルの作成を機により多くの投稿をしてもらい、また要約の質を高め
最近公開されたGitHubのAPIは、GraphQLという形式に対応しました。今後はこちらが主流になっていくようで、既存のREST APIからGraphQLへのマイグレーションガイドも提供されています。 今回は、このGraphQLについて、実際にGitHubのAPIを叩きながらその仕組みを解説していきたいと思います。 GraphQLとは 歴史 GraphQLは、Facebookの中で2012年ごろから使われ始めたそうです。その後2015年のReact.js Confで紹介されたところ話題となり、同年"technical preview"のステータスでオープンソースとして公開されました。その後仕様が詰められ、2016年9月に晴れて"preview"を脱し公式実装として公開されました。これと同じタイミングで、GitHubからGraphQLバージョンのAPIが公開されています。 このあたりの経緯
Dockerfileは手順書に近いもので、書くのはすぐに書けますがその内容(=手順)が合っているかを確認するのが結構大変です。 実際作ってみてはまりどころもわかってきたので、その手順を共有しようと思います。 FROMの選択 Dockerfileは、既にあるDockerfileを継承して書くことができます。この継承に利用するのが、先頭に記述するFROMです。 楽をするためには、自分の構築したい環境に近い&オフィシャルなDockerfileをまず見つけることが重要になります。 私の場合Pythonの環境をよく作るので、Python/MinicondaのDockerfileをFROMにより継承することが多いです。 Python FROM python:3のように(リポジトリ名:タグ)という形式で利用する continuumio/miniconda conda installを環境構築で使用する場
GitHub Appsとは、GitHubと連携するアプリケーションの新しい形式です。 この形式はアプリケーションのマーケットプレイスである、GitHub Marketplaceの公開と共にアナウンスされました。つまり、GitHub Appsを作成する、マーケットプレイスで公開する、それで収益を上げる、というエコシステムがしっかりと整備されたということです。 そんな夢の広がるGitHub Appsの作り方を、本記事では紹介しようと思います。 GitHubと連携するアプリケーションの形式 まず、GitHub Appsを含め、GitHubと連携するアプリケーションの形式を整理しておきます。 Webhooks Webhooksは、リポジトリの特定のイベント(pushしたとか)をトリガにして、その更新情報を設定先のサーバーなどに通知する形式になります。設定は以下の場所で行います。ここで、通知対象のイ
いざPull Requestのレビュー!と挑んだ瞬間、「ここタイポな」という先制パンチをくらうのはとても残念なことです。 また、これは指摘しているほうにとってもチェックが負担で、気が重いものです。 人間は人間にしかできないチェックに集中すべきですし、貴重なレビュー時間を誤字脱字の修正に使うのはもったいないです。そこで開発したのが、タイポの自動検知と修正を代行するBot。その名もtypotです。 chakki-works/typot こちらは先日公開がアナウンスされたGitHub Marketplaceと共に公開された、新しいGitHubアプリの形態であるGitHub Appsで作成しています(それまではWebhookかOAuthだった)。 GitHub AppsはOAuthのようにユーザーではなく、リポジトリにひもつく形態になります。そのため、管理者ユーザーがいなくなった(あるいは権限を失
昨今の対話システムの盛り上がりから、人とコミュニケーションを取るようなロボットを開発したい・・・!と思う方も多いのではないかと思います。 私自身、以前対話ロボットの研究開発をしていました。そこで直面したのは、LINEやTwitter上で動く対話ボットと異なり、物理で存在するロボットは音声認識の問題や、人の動きといった「対話外」の情報をどう活用するかなど、とても多くの考慮点があるということでした。 そこで、本記事ではその研究をしていく中で得た知識を展開(供養)しようと思います。これから人のパートナーとなるようなロボットの開発をする方にとっての参考となれば幸いです。 研究領域の全体像 まず、対話ロボットにおける研究領域の全体像は以下のような形になります。 Observation 近づいて来る人や周辺環境(天気・時刻など・・・)を観測し、置かれている状況の情報を更新する Request Unde
便利なツールを作成したら、ぜひみんなにも使ってもらいたいものです。PythonではPyPIというパッケージを登録するサイトがあり、ここに登録することでpip installなどでインストールすることができるようになります。 本文書では、その手順を紹介したいと思います。 注意: 古い方法について ・・・と思ってGoogleで検索すると、現在では推奨されない古い方法がたくさん引っかかります。以下は古い方法の代表例なので、注意をしてください。 setup.pyでdistutilsを使っている 現在はsetuptoolsを使うのが推奨です .pypircにdistutilsの記載がある 現在は必要ありません python setup.py registerやpython setup.py sdist uploadを使っている これらは平文のHTTP/認証されていないHTTPSの通信を利用するため、
自然言語においても、最近は生ビールを頼む感覚で「とりあえずディープラーニング」となることが多いです。実際ディープラーニングは高精度を記録できることが多いですが、実はその精度は基礎的なモデルでも記録できたり、あげく負けるようなこともあったりします。 研究機関として名高いDeepMindの発表した論文でも、こうした事態がありました。 文章を読み、理解する機能の獲得に向けて-Machine Comprehensionの研究動向-より また、最近はベースラインとして良く利用されているモデルでも最高精度を達成できるといった論文もありました。このように、ベースラインとして足蹴にされているモデルでも存外隅には置けないのです。 今回は自然言語処理における基本的な手法の一種であるトピックモデルを取り上げてみます。これは文書分類などに使用されるモデルですが、文書分類の際に著者の存在を仮定するなど(オーサートピ
音楽制作を行っていて人工知能技術に興味がある、あるいは機械学習をやっていて音楽が好きだ!そんな方に送る、機械学習による音楽生成のチュートリアル資料となります。本記事のみで、仕組みの理解から実際に音楽を生成して、SoundCloudで共有するまでの手順を網羅しています。 そして、本記事は先日実施した人工知能時代の音楽制作への招待 - Google Magenta 解説&体験ハンズオン -の自習用資料でもあります。 イベント自体は100名を超える方(開催前日の段階で倍率が5倍)に応募いただき、行きたかったけど行けなかった!という方も多いかと思うので、自習編にて内容に触れていただければと思います。 ※なお、会場のキャパを広げられなかった代わりに撮影をしていただいたので、後日講義動画が上がればそちらも掲載させていただきます。 ゴール 音楽生成とはそもそもどういう仕組みで、どんなアプローチが取られて
Help us understand the problem. What are the problem?
新しい技術を身に付けたい!と思って検索をしても、検索上位に来る記事が「わかりやすい」かというとそうではない、ということはよくあります。 記事のビュー数、またQiitaのいいね数やはてブ数は、この参考にはなりますが体感として高ければいいというものでもない印象です。 そこで、こうした文章の「評判」だけでなく、文章そのものの構成や書き振りなどに注目して、その「わかりやすさ」を評価できないか?ということで実験的に行ってみたものが以下の「Elephant Sense」になります。 chakki-works/elephant_sense (Starを頂ければ励みになりますm(_ _)m) ※名前の由来は、象の感覚って実はものすごいらしいという話から 開発に際しては基本的な自然言語処理/機械学習の手続き踏んで行ったので、その過程を本記事でご紹介したいと思います。 ゴール 事前にQiitaの記事を対象に、
機械学習を実務で使う場合、「ではお客様、ラベルデータを・・・」と申し出て色よい返事が返ってくることはあまりありません。また、例えば自動運転車を作るときに、データが足りないからその辺流してくるか、お前ボンネットに立ってデータとってな、とするのは大変です。 NICO Touches the Walls 『まっすぐなうた』 より そこで必要になってくるのが転移学習です。 転移学習とは、端的に言えばある領域で学習させたモデルを、別の領域に適応させる技術です。具体的には、広くデータが手に入る領域で学習させたモデルを少ないデータしかない領域に適応させたり、シミュレーター環境で学習させたモデルを現実に適応させたりする技術です。これにより、少ないデータしかない領域でのモデル構築や、ボンネットに立つという危険を侵さずにモデルを構築することができるというわけです。 この転移学習の可能性は、NIPS 2016
Pythonで機械学習の環境を作る、というと山のように「Anacondaをインストールせよ」という記事が出てきますが、実際環境構築はMinicondaというAnacondaの最小構成版で十分です。 ということを伝える記事です。 最速で機械学習の開発環境を作る方法 基本は以下で十分です。 Minicondaをインストールする(※もちろんPython3の方をインストールして下さい) conda create -n ml_env numpy scipy scikit-learn matplotlib jupyterで開発環境を作成 activate ml_envで作成した開発環境を有効化 実際はMacかWindowsかなどで微妙な差異があるので、詳細はこちらを参照して下さい。 Pythonで機械学習アプリケーションの開発環境を構築する また、開発環境を作成するcondaコマンドの使い方については
機械学習の仕組みはわかったけど、実際のサービスではどういう風に使われているんだろう? 学習の環境って、自前でGPUを買っているんだろうか。それともクラウドが主流なんだろうか? というような実務における利用方法や開発に関する疑問は、誰しも一度は抱いたことがあるのではないかと思います。私自身疑問に思っていて、実務への活用を考えている方向けの講習を担当するにあたり、思い切ってアンケートを取ってみました。 対象は実務で機械学習を利用している方で、32の回答を得ることができました(ご回答頂いた方、ありがとうございました!)。なお、回答はTwitter/Facebookなどで募ったため、サンプリングバイアスが存在する可能性がある点についてはご留意を願います。 以下で、その結果について所見を交えながら公開をしたいと思います。 ※生のアンケート結果も公開したかったんですが、自由記述の回答にプライバシー的な
Slackは、チーム内のコミュニケーションを取るためにはとても便利なツールです。 しかし、おそらくあなたが気付いているように、Slackはあなたの「集中タイム」を断片化します。投稿をしたら反応が気になる、投稿をしていなくてもどんな話題が交わされているのか気になる、時には重要な情報が飛んで来ることもあるから見逃せない・・・こうして、Slackのタブに灯る「*」マークは一瞬にして集中していた作業時間をストップさせてしまいます。 堅苦しい会議も時間の無駄になりがちですが、その一方でこうしたチャットツールによる「コミュニケーションの断片化」もまた問題であると言えます。 そこで今回考案したのが、Slack Refereeです。これは、端的にはSlackチャンネルを休憩スペースにするというアイデアです。つまり、休憩時間中だけ会話が可能で、それが終わったら作業を行う集中タイムに戻る、ということです。 コ
「あなたって、私の言葉の最後の方しか聞いてないのね」 実は人間だけでなくニューラルネットワークもそうだった、という結果を示しているのがこちらの論文です。 Frustratingly Short Attention Spans in Neural Language Modeling 言い訳としては「だって君の次の言葉を予測するだけならそれで十分だから」ということになるんですが、そう言うと角が立つのは人間関係においても研究においても同様のようです。 本編は、上記の論文の紹介と共に他の関連論文も交えながら、実際の所本当に最後の方しか必要ないのか、そうであればなぜそんなことになるのか、という所について見て行ければと思います。 なお、参照した論文は以下のGitHubで管理しています。日々更新されているため、研究動向が気になる方は是非Star&Watchをして頂ければと!。 arXivTimes At
最近「人工知能が~」というニュースが山のように出てきますが、その中にはだいぶ誇張された表現のものも少なくありません。 人工知能関連の技術に注目が集まるのは、研究資金の増加や案件の発生という面では良いことです。しかし、「仕事が奪われるぞ!」みたいな過度な不安を煽ったり、「人工知能だったら何でもできるんやろ?」といった過度な期待を煽ってしまうことで、実体とはかけ離れた議論や誤解を生んでしまうという面もあります。 本稿では、目についた中で大きな誇張があるニュースを取り上げるとともに、その実際のところはどうなのか?について紹介をしていきたいと思います。本記事が、冷静な議論と共に背景となる技術的な面への興味の喚起となれば幸いです。 日経のAI記者が始動、1日30本の決算サマリーを量産 同僚が人工知能という世界が現実のものになろうとしている。 人工知能は人の仕事を奪うことになるのか、あるいは型にはまっ
次のページ
このページを最初にブックマークしてみませんか?
『@icoxfog417のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く