サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブックレビュー
qiita.com/Hironsan
ここ数年、機械学習を使った研究開発やアプリケーション作成、データ分析がしやすい環境が整ってきました。機械学習フレームワークとしては、scikit-learn や TensorFlow が整備され、各クラウドベンダーからは機械学習用APIや学習/運用用のインフラが提供され、誰でも最先端の機械学習に触れられる時代になりました。 このような環境で自社の競争力を強化するには、機械学習プロセスの最適化による生産性向上が一つの手です。研究開発においては、アルゴリズムの開発をすばやく行わなければ競合に先んじられ、論文を書かれてしまうでしょう。また、アプリケーション作成やデータ分析業務での生産性向上が競争力強化に役立つのは言うまでもありません。 そこで本記事では、機械学習プロセスを自動化する技術であるAutomated Machine Learning(AutoML)の概要について紹介します。具体的には、
固有表現認識で認識した固有表現を黒塗りすることで、匿名化っぽいことができると考えられます。というのも、機密文書で黒塗りされている部分は機密に関係している人名や組織名などが多いと考えられるからです。上文の固有表現部分を黒塗りすると以下のようになります。 今回は固有表現を認識するためにディープラーニングを用いたモデルを構築します。具体的にはLampleらが提案したモデルを構築します。このモデルでは、単語とその単語を構成する文字を入力することで、固有表現の認識を行います。言語固有の特徴を定義する必要性もなく、ディープな固有表現認識のベースラインとしてよく使われているモデルです。 Lampleらのモデルは主に文字用BiLSTM、単語用BiLSTM、およびCRFを用いて構築されています。まず単語を構成する文字をBiLSTMに入力して、文字から単語表現を獲得します。それを単語分散表現と連結して、単語用
8種類の分類でも良いのですが、実際に固有表現認識を何かのアプリケーションに組み込んで使う際は、8種類では不十分なことがあります。それに対応するために、ドメインに特化した分類を行ったり、より汎用的な分類を行える分類器を構築したりします。 本記事ではテキスト中の固有名詞を150種類程度に分類する分類器を作ります。最近は機械学習を使うことが多いですが、今回は学習させる時間がなかったので、知識を使って150種類の固有表現を認識してみます。 手法の説明 手法の概要 今回は固有表現を認識するために、機械学習ではなく知識を用いて認識します。具体的には、固有表現の辞書を作り、文字レベルでパターンマッチングします。複数パターンにマッチした場合は、最長一致したパターンを採用します。イメージは以下の通りです。 なんだか昔の形態素解析器みたいですね。 では、辞書を作っていきましょう。 固有表現の辞書作り 固有表現
機械学習は日進月歩の世界であり、情報収集が欠かせません。みなさんもブログやニュース記事を読む、Twitter で機械学習に関するつぶやきをしている人をフォローする、毎日 arXiv の論文をチェックする、といった方法で情報収集しているのではないかと思います。 情報収集の際に課題となるのが、情報が多すぎて重要な情報が埋もれてしまう点があげられます。通常、この問題の解決策として、いいね数やブックマーク数の多い記事を読む、フォローする人を絞り込む、何らかのキュレーションツールを使う、といった手段が取られます。 重要な情報を効率的にチェックしたい方におすすめできる方法の一つとして、メルマガを購読する方法があります。機械学習に関するメルマガを購読する利点として、以下の点をあげられます: 識者が配信する情報を選んでいるので、重要な情報を効率的にチェックできる ほとんどの場合、週一で配信されるので、毎日
単語の分散表現は現在の自然言語処理で当たり前のように使われています。最近は学習済みのモデルが数多く公開されており、自分で時間とお金をかけて学習させる必要性が少なくなってきました。しかし、公開されているとはいえ自分で探してきてダウンロードするのはなかなか手間がかかります。 この手間をなくすために単語分散表現のダウンローダを作ってみました。名前は chakin です。 chakki-works/chakin (スターつけていただけるとやる気がでますm(__)m) chakinの特徴としては、Pythonで書かれておりpipでインストールできる、検索からダウンロードまでワンストップでできる、23のベクトルをサポートしている(2017/5/29時点)と言ったことが挙げられます。サポートするベクトルについては今後増やしていく予定です。 では使い方をご紹介します。 chakinの使い方 インストールは
自然言語処理に前処理は不可欠です。テキストは文字の羅列であり構造化されていないため、そのままでは処理するのが難しいです。特にWebテキストの中には HTMLタグ や JavaScript のコードといったノイズが含まれています。このようなノイズは前処理して取り除かなければ期待する結果は得られないでしょう。 出典: Deep learning for computational biology 本記事では自然言語処理における前処理の種類とその威力について説明します。説明順序としては、はじめに前処理の種類を説明します。各前処理については、1.どんな処理なのか、2.なぜその処理をするのか、3.実装方法(なるべく) という観点から説明します。種類について説明した後、前処理の威力を測るために前処理をした場合としなかった場合での文書分類の結果を比較します。 前処理の種類と実装 この節では以下に示す5つ
あなたは機械学習のプロジェクトを毎回違う構成で作っていませんか? 何をどこに配置するかで悩んで時間がかかっていませんか? そんな方に朗報です。 機械学習のプロジェクトはコマンド一発で作れます。 以下のようなプロジェクトを数秒で作れます。 ディレクトリ構造 ├── LICENSE ├── Makefile <- Makefile with commands like `make data` or `make train` ├── README.md <- The top-level README for developers using this project. ├── data │ ├── external <- Data from third party sources. │ ├── interim <- Intermediate data that has been transfor
チームで開発している時に、いつまでも同じエラーを抱えている人っていませんか? 「いつまでも自分で抱えていないで聞けばいいのに!」と思うのですが、本人は解決できると思っているらしく、自力で解決しようとしてずるずると時間がかかってしまいます。これは本人にとってもチームにとっても生産性の低い状態であると言えます。 そんな状況を解決すべく、エラー発生時にエラーメッセージと該当するコードを自動的にチームのSlackへ通知するIDEA用のプラグインをつくってみました。プラグインの名前は watchMe です。 watchMe では、自分の抱えているエラーをチームメンバーに共有し、アドバイスをもらうことで問題をすぐに解決することを目的としています。 コードは以下で公開しています。スターつけていただけるとうれしいですm(_ _)m chakki-works/watchMe 導入にはIDEAでのプラグインイ
なぜ自然言語処理にとって単語の分散表現は重要なのでしょうか? この記事をご覧になっている方は Word2vec(Mikolov et al., 2013) についてご存知かもしれません。Word2vec ではまるで単語の意味を捉えられているかのような演算を行うことができます。例えば King から Man を引き Woman を足すと Queen が得られる(King - Man + Woman = Queen)というのは有名な例です。 from https://www.tensorflow.org/get_started/embedding_viz 実はその内部では、単語を分散表現(あるいは埋め込み表現)と呼ばれる200次元ほどのベクトルで表現してベクトルの足し引きを行っています。この200次元ほどのベクトル内部に各単語の特徴が格納されていると考えられています。そのため、ベクトルの足し引
最近久しぶりにアルゴリズムイントロダクションを読んでいるのですが、ふと「Python(CPython)のデータ構造に関する各操作の計算量ってどれくらいなのかな?」と気になったので調べてみました。以下のページを参考にしています: Python Time Complexity 以下では $n$ や $k$ といった記号を使います。ここで $n$ はコンテナ内の要素数、$k$ はパラメータ内の要素数かパラメータの値とします。では見ていきましょう。 2021/05/02 コメントでのご指摘を記事に反映しました。ありがとうございます。 リスト まずはリストです。Pythonではリストは内部的にはC言語の配列として表しているようです。そのため、先頭要素の追加や削除を行うとそれ以降の要素をすべて移動する必要があるため大きなコストがかかります。なので先頭に要素を追加したり削除する必要がある場合は、代わりに
はじめに 最近、畳み込みニューラルネットワーク(CNN)を用いた自然言語処理が注目を集めています。CNNはRNNと比べて並列化しやすく、またGPUを使うことで畳み込み演算を高速に行えるので、処理速度が圧倒的に速いという利点があります。 この記事は、自然言語処理における畳み込みニューラルネットワークを用いたモデルをまとめたものです。CNNを用いた自然言語処理の研究の進歩を俯瞰するのに役立てば幸いです。 文の分類(評判分析・トピック分類・質問タイプ分類) Convolutional Neural Networks for Sentence Classification(2014/08) 評判分析や質問タイプの分類などの文分類を行うCNNを提案している論文。 具体的には文を単語ベクトルの列として表し、それに対してCNNを用いて特徴抽出・分類を行っている。論文では事前学習済みの単語ベクトル(Goo
fastTextの学習済みモデルを公開しました。 以下から学習済みモデルをダウンロードすることができます: Download Word Vectors Download Word Vectors(NEologd) 埋め込みベクトルの情報は以下のリポジトリにまとめているので、こちらもよろしく。 awesome-embedding-models Motivation 以下の記事では icoxfog417 が GitHub で公開していたリンクを貼りました。 いますぐ使える単語埋め込みベクトルのリスト ただ、公開されていたベクトルをダウンロードするのにGit LFSが必要であったり場所がわかりにくいといった問題がありました。そのため、今回は簡単にダウンロードできるように学習・公開しました。 How to make fastTextの使い方は以下の記事を参考にしました。fastTextの理論と使い
はじめに 単語埋め込みとは、単語を低次元(と言っても200次元程度はある)の実数ベクトルで表現する技術のことです。近い意味の単語を近いベクトルに対応させることができるとともに、ベクトルの足し引きで意味のある結果(例えば king - man + women = queen)が得られるのが特徴です。 単語埋め込みベクトルは品詞タグ付け、情報検索、質問応答などの様々な自然言語処理アプリケーションに使われる重要な技術です。とはいえ、実際に用意するのはなかなか骨の折れる作業です。大規模なデータをダウンロードし、前処理をかけ、長い時間をかけて学習させ、結果を見てパラメータチューニングを行う・・・。 そのため、単に使いたいだけなら学習済みのベクトルを使うのが楽です。というわけで、そんな単語埋め込みベクトルの中から今すぐ使えるものをピックアップしてみました。 埋め込みベクトルの情報は以下のリポジトリにま
はじめに 代表的なクラスタリングアルゴリズムである K-Means を用いて、画像の圧縮をしてみます。まずは、K-Means のアルゴリズムについて説明します。そのあと、K-Meansを使った画像圧縮について説明します。なお、内容についてはCoursera Machine Learningを参考にしています。 K-Means アルゴリズム アルゴリズムの直感的な説明 K-Means アルゴリズムは大きく分けて以下の3つの処理に分解されます: 重心の初期化 クラスタ割り当て 重心の再計算 それぞれのステップについて、イメージを交えて理解していきましょう。 1. 重心の初期化 まずは、重心と呼ばれる点の位置を決定します。それぞれの重心は各クラスタの標準的なパターンとみなされます。そのためデータを分けたいクラスタ数分の重心が必要です。下図では星印が重心、丸印がデータを表しています。ここでは重心の
まだ機械学習の論文を追うのに消耗してるの? はい、消耗しているんです(涙) 機械学習の分野って本当に進歩が早いですよね? 「最新の手法」が週間で変わるぐらいその変化は激しいものです。 そんな世界にキャッチアップしていくためには、一人の力だけでやっている場合ではない!ということで、私や私の先輩 icoxfog417 を含めて何人か共同で機械学習系論文の読み会を開催しています。 今回は、そこで読んだ論文の内容をつぶやいてくれる Twitter Bot をつくってみました。この Bot は読んだ論文についての一言まとめをつぶやいてくれます。一言まとめにより論文の内容を日本語で素早く把握できるようになります。以下のような感じです。 リサーチしている論文は、以下の GitHub リポジトリ( arXivTimes )で管理しています。こちらを更新するたびに Twitter でつぶやく仕組みになってい
皆さん、Word2vec の仕組みはご存知ですか? Word2vec は gensim や TensorFlow で簡単に試せるので使ったことのある方は多いと思います。しかし、仕組みまで理解している方はそう多くないのではないでしょうか。そもそも本家の論文でも内部の詳細については詳しく解説しておらず、解説論文が書かれているくらいです。 本記事では Word2vec のモデルの一つである Skip-Gram について絵を用いて説明し、概要を理解することを目指します。まずは Skip-Gram がどのようなモデルなのかについて説明します。 ※ 対象読者はニューラルネットワークの基礎を理解しているものとします。 どのようなモデルなのか? Skip-Gram はニューラルネットワークのモデルの一つです。Skip-Gram は2層のニューラルネットワークであり隠れ層は一つだけです。隣接する層のユニット
序盤から中盤にかけての中心は音読、英作文、文法であった。 特に英作文と文法は非常に重視しており、一番時間をかけた。 中盤から終盤にかけては精読、多読、ボキャビルを行った。 文法を叩き込んだ後に精読と多読を行ったのは誤読せずに済んだので良かったと思う。 学習時間の内訳をグラフで示すと以下のようになります。 英作文と文法で約60%を占めています。英文法を徹底的に体に叩き込みました。 逆に精読、多読、発音が占める割合は低くなっています。特に発音が少ないのは後で後悔することになります。 学習の詳細 ここでは各トレーニングに使った教材について簡単なコメントとともに書いておきます。 音読 音読の一冊目はコレをやりました。英語上達完全マップの作者が書いた本なので、音読のトレーニングがしやすいように構成されています。そのため、様々な人が書いていますが音読の一冊目にはこれをやっておけば間違いはないと思います
はじめに 先日 TensorFlow 0.12 がリリースされました。 その機能の一つとして、埋め込み表現の可視化があります。これにより高次元のデータをインタラクティブに分析することが可能になります。 以下は MNIST を可視化したものです。以下の画像は静止画ですが、公式サイトでは3次元でぬるぬる動いているところを見ることができます。 本記事ではWord2vecの可視化を通じて、Embedding Visualization の使い方を試してみました。まずはインストールから行っていきます。 インストール まずは TensorFlow 0.12 をインストールします。以下のページを参考にインストールしてください。 Download and Setup インストールが終わったら可視化のために学習を行います。 モデルを学習する まずはリポジトリをクローンした後、以下のコマンドを実行して移動しま
はじめに Cloud Vision APIとNatural Language APIを組み合わせて、名刺から情報抽出してみましょう。APIを使うためにPythonを用いて作ることにします。 前回記事はこちら: kintoneで名刺管理アプリを作ってみよう これから作るアプリ 名刺画像を与えると名前、会社名、住所を抽出するアプリを作成します。イメージとしては以下のようになります: アプリ作成の流れ Step 0:アプリ作成の準備をする ↓ Step 1:Vision APIを使ってテキスト検知をする ↓ Step 2:Natural Language APIを使って名前や会社名を抽出する ↓ Step 3:2つのAPIを統合して名刺から情報抽出する Step0(3min) アプリ作成の準備をする アプリを作るために、必要なライブラリのインストール、リポジトリのダウンロード、APIキーの設定を
はじめに TensorFlowにはresizeするための関数がいくつもある。 調べてみるとTensorFlowでresize用の関数は以下の6つのようだ。 tf.image.resize_images tf.image.resize_area tf.image.resize_bicubic tf.image.resize_bilinear tf.image.resize_nearest_neighbor tf.image.resize_image_with_crop_or_pad ドキュメントを読むと説明は書いてあるのだが、いまいちピンとこない。 なので実際に試して視覚的に動作を理解したいと思う。 結論から言うと、tf.image.resize_imagesが以下の4つの機能を含んでいた。 tf.image.resize_area tf.image.resize_bicubic tf.im
背景 仕事をしているとき、業務に関係ない情報を閲覧していることって誰でもありますよね? そんなときに背後にボスが忍び寄っていると気まずい思いをします。もちろん急いで画面を切り替えれば良いのですが、そういう動作は逆に怪しまれることになりますし、集中しているときは気がつかないこともあります。そこで怪しまれずに画面を切り替えるために、ボスが近づいてきたことを自動的に認識して画面を隠すシステムを作ってみました。 具体的にはKerasを用いてボスの顔を機械学習し、カメラを用いて近づいてきたことを認識して画面を切り替えています。 ミッション ミッションはボスが近づいてきたら自動的に画面を切り替えることです。 状況は以下のような感じです。 ボスの席から私の席まではだいたい6,7mくらいです。ボスが席をたってから、4,5秒で私の席に到達します。したがって、この間に画面を隠す必要があるわけです。時間的余裕は
はじめに Deep Learningで画像を精度よく分類するにはとにかく枚数が必要です。しかし、大量の画像をすべて手作業で用意・タグ付けするのは困難です。そこで、タグ付けされた画像を加工することで画像の枚数を増やす(水増しする)ことが行われます。 今回は、水増しするためにどのようなことをするのかをTensorFlowのコードから学びたいと思います。 具体的にはCIFAR-10のコードから学んでいきます。 cifar10/cifar10_input.py 実際のコードでは以下のように複数の処理を組み合わせて画像の水増しを行っていました。 # Image processing for training the network. Note the many random # distortions applied to the image. # Randomly crop a [height,
Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
はじめに こんにちは、Hironsanです。 顔認識は画像中に映った人を検知し、人物の識別を行う技術です。顔認識の用途としては、監視カメラのシステムに組み込んでセキュリティ向上に役立てたり、ロボットに組み込んで家族の顔を認識させたりすることがあげられます。 今回はTensorFlowを使って畳み込みニューラルネットワークを構築し、既存のデータセットを使って顔認識器を作ってみます。 対象読者 畳み込みニューラルネットワーク(CNN)を知っている TensorFlowでどう書くかはわからない CNNの理論については以下を見ればわかると思います。 Convolutional Neural Networkとは何なのか 準備 TensorFlowのインストール TensorFlowのインストールは公式サイトが丁寧に解説しているのでそちらを参照してください。 TensorFlowのインストール データ
はじめに こんにちは。Hironsanです。 3月から4月にかけてLine, Facebook, Microsoftと各社がBot開発用プラットフォームを発表して以来、爆発的な数のBotが登場しています。実にFacebook Messengerだけに限っても2016年7月時点で1万1000超のBotが稼働しています。 しかし、これらのBotのほとんどは単純な一問一答型のシステムであり、対話システムと言えるものではありません。これでは徐々にユーザの嗜好を聞き出すような対応を行うことはできません。 そこで今回は、対話の履歴を考慮したレストラン検索対話システムを作り、最終的にはBotに組み込んでみたいと思います。完成イメージとしては以下のアニメーションのようなものを作ることができます。 具体的には以下のステップで作成します。 簡単なパターンマッチ おうむ返し 対話状態を保持したレストラン検索対話
はじめに hugは、Web APIサーバーの構築に特化したWebアプリケーションフレームワークです。 他のフレームワークがテンプレートエンジンやORマッパなどのリッチな機能を詰め込んでいるのに対して、hugはWeb APIサーバーに必要な機能だけに特化したフレームワークになっています。 hug Official Site 特筆すべきは、そのシンプルさと速度です。 以下は公式ページに掲載のベンチマークです(Pycnicによるベンチマーク)。 速度ではわずかにFalconには及びませんが、それでも非常に高速であり、またFalconより実装するのがはるかに簡単です。 さっそくインストールして触ってみましょう。 インストール hugはPython3系のみに対応しています。インストールは以下で行います。
機械学習を使って顔画像認識をやりたいと思った時に調べたデータセットをメモしておく。 他に「こんなのあるよ」とか「これが標準的なデータセットだよ」とかあれば教えてほしい。 Labeled Faces in the Wild 名前 Labeled Faces in the Wild
はじめに みなさん、強化学習してますか? 強化学習はロボットや、囲碁や将棋のようなゲーム、対話システム等に応用できる楽しい技術です。 強化学習とは、試行錯誤を通じて環境に適応する学習制御の枠組みです。教師あり学習では入力に対する正しい出力を与えて学習させました。強化学習では、入力に対する正しい出力を与える代わりに、一連の行動に対する良し悪しを評価する「報酬」というスカラーの評価値が与え、これを手がかりに学習を行います。以下に強化学習の枠組みを示します。 エージェントは時刻 $t$ において環境の状態 $s_t$ を観測 観測した状態から行動 $a_t$ を決定 エージェントは行動を実行 環境は新しい状態 $s_{t+1}$ に遷移 遷移に応じた報酬 $r_{t+1}$ を獲得 学習する ステップ1から繰り返す 強化学習の目的は、エージェントが取得する利得(累積報酬)を最大化するような、状態
このような対話を通じて、レストランの検索に必要な情報をユーザから取得し、レストラン検索を行います。 今回、レストラン検索にはHotPepperグルメサーチAPIを利用させていただきました。ありがとうございます。 システムアーキテクチャ 対話システムは複数のモジュールから構成されています。今回は、各モジュールは独立に動作させず、前段階のモジュールの処理が終わった段階で駆動されるようにしています。 最終的なシステムアーキテクチャは以下の図のようになりました。 今回のアーキテクチャに沿って処理の流れを説明すると以下のようになります。 ユーザがテキストを入力すると、入力したテキストは言語理解部に入力されます。 言語理解部では入力されたテキストを解析して、対話行為と呼ばれる抽象的な意味表現に変換します。 言語理解部から出力された対話行為は、対話管理部に入力されます。対話管理部では入力された対話行為を
次のページ
このページを最初にブックマークしてみませんか?
『@Hironsanのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く