こんにちは。
今回は「強化学習」についてお話をしたいと思います。
~関連ブログ~
「強化学習でボールを自由に動かす ~ネズミを追いかけるボール Part 1~ (深層学習 Deep Reinforcement Learning )」
人間は学習することによって、行動をより良いものに変えていくことができますよね。
コンピュータも自己学習をすることにより、より良い行動を取るようにすることができます。
それが強化学習です。
●「強化学習で○×ゲーム(三目並べ)」の詳しい内容が書籍として出版されました。
詳しくはこちらをご覧下さい。
最近有名なのが、GoogleのDQN(Deep Q Network) でしょう。
シンプルなテレビゲームであるピンポンゲームを学習し、次第に強くなっていきます。
最初はほぼ負けているプレイヤー(コンピュータ)ですが、数千回のゲームを繰り返していくと
だんだんと勝てるようになっていく様子は見ていて飽きません。
youtubeに強化学習の様子がありますので、興味のある方はどうぞ。
https://www.youtube.com/watch?v=N813o-Xb6S8
今回は、ピンポンよりももっとシンプルなゲームで強化学習を試してみたいと思います。
...
More
Author: takahara
Hadoopは巨大なNFSサーバとして使用できるのか
こんにちは。
今回は「優秀なファイルシステムであるHDFSですが、現行のNFSサーバを置き換えることができるだろうか」という事について考えてみたいと思います。
まず、HDFSのメリットについて再確認してみます。
Hadoop - HDFSのメリット
安価に大容量のファイルシステムが構築できる。
ストレージサイズの拡張が簡単に行える。
分散配置されたブロックごとに通信が発生するため、ファイルの取得・格納スピードが速い。
ファイルのレプリケーションが自動で行われるため、マシントラブルによるデータ喪失が起こりにくい。
データ容量と比例して計算能力を獲得できる。
特に注目すべきなのは 「5. データ容量と比例して計算能力を獲得できる」という事です。
今までのNFSサーバは、ファイルを格納するためだけのサーバというイメージが強く、またそのように使用しているユーザーが大半だと思います。
Hadoopでは、容量拡大のためにスレーブマシンを増やせば増やすほど処理性能も上がりますので、知らず知らずのうちにスーパーコンピュータ並の計算能力を得ることができているかもしれません。
良い事ばかりのように見えるHDFSですが、NFSのようにマウントして使用するには、別のシステムを一つ経...
More
Varnish を使ってサーバーレスポンスを向上させる
こんにちは。
まずはこんな愚痴から始めます。
ECサイトを作成したのはいいけど、レスポンスが遅くてユーザーからクレームが来てる…
今さらソースコードを修正なんて、工数が掛かりすぎるよ…
こんな問題に直面している方、結構いるのではないでしょうか。
そんな時はこれ!「Varnish」を試してみましょう。
Varnishとは
Varnishは、リバース・プロキシー技術をつかった高性能なHTTPアクセラレータです。
一昔前に主流であったSquidよりも高速で動作すると言われています。
静的なhtmlのみならず、PHPやRubyなどで書かれた動的なページもキャッシュ出来るところが大きなポイントです。
Varnishについての詳しい説明と、ダウンロード・インストール関係は こちら にお任せします。
今回は どのように設定すれば、どんな風にレスポンスが改善されるか! を見ていきたいと思います。
機材構成
テストの為に作成した構成では、1台のサーバーにNginx、Varnish、Apacheが共存しています。
SSLにも対応するようにNginxを入れてありますが、HTTP接続のみで良いならNginxは必要...
More
Hadoop上でナイーブベイズを利用して、ニュース記事を分類する
こんにちは。
情報をSNSなどから取得して解析をしようとすると、どうしてもジャンルで分類をする必要が出てきます。
yahooやgooのTOPページにはたくさんのニュース記事が社会・経済・生活・・・と分類されていますよね。
10件や20件であれば、手作業で分類しても良いかもしれません。ですが、数千数万となると手作業で行うには限界があります。
そんな問題を解決するために、ナイーブベイズを利用してジャンル分類を行い、どの程度マッチするものなのかについて書きたいと思います。
●ベイズ統計「見えないものをさぐる ―それがベイズ」を出版しました。詳しくはこちら
ナイーブベイズについて
ナイーブベイズ(naive bayes) は、迷惑メールを分類するためのフィルターとして使われているようです。
基本的にベイズ確率を使用します。
ベイズ(bayes)基本式
分母P(A)は分類を行う時は一定なので、
と考えられます。
Ciがジャンル、Aがテキストに含まれる1つ1つの単語にあたります。
単語AがジャンルCiに含まれる確率を、右辺の式で計算します。
ナイーブと呼ばれる所以は、そもそも単語というものは独立ではないのに、計算上独立のように扱ってしまうこ...
More
Hadoop分散処理の性能評価(MapReduceとSpark)
こんにちは。
Hadoopでは以前よりMapReduceを用いて分散処理を行ってきましたが、
最近、オンメモリで処理を行うSparkという分散処理技術が台頭してきています。
いずれMapReduceは使用されなくなり、全てSparkに置き換わるのではないかとも言われています。
MapReduceとSparkではどの程度、性能に違いがあるのでしょうか。
ここではレコメンドエンジンの作成・実行を通して、MapReduceとSparkの性能評価を行います。
使用するHadoopクラスタは1マスター、4スレーブの5台構成。
各マシンともに低スペック (2Core, メモリ1GB)マシンを使用しています。
性能を比較するのは以下の6パターンです。
MapReduce: スレーブ1台
MapReduce: スレーブ2台
MapReduce: スレーブ4台
Spark: スレーブ1台
Spark: スレーブ2台
Spark: スレーブ4台
レコメンドエンジンの作成
レコメンドエンジンとは何でしょうか。
Amazonや楽天で欲しい物を探していると下の方に「この商品を買った人はこんな商品も買ってい...
More
ビッグデータの取り扱い方法 (Hadoop)
こんにちは。
今回は、最近世間で注目されている ビッグデータ の取り扱い方について考えてみたいと思います。
ビッグデータとは
ビッグデータは以下のように定義されています。(もっと詳しく知りたい方は こちら をご覧ください)
市販されているデータベース管理ツールや従来のデータ処理アプリケーションで処理することが困難なほど巨大で複雑な データ集合の集積物を表す用語である。
「巨大」というのが1エクサバイトなのか1ペタバイトなのかは意見が分かれる所ですが、つまりは「今までのやり方じゃ処理出来ないくらい大きなデータの集まり」と言えるでしょう。
今までは、処理しきれないから捨ててしまっていた巨大なデータを、もう一度見直して利益につなげていこうじゃないか!!という動きが活発になったので、ビッグデータが注目されています。それは「大手ECサイトの全アクセスログ」であったり、「日本全国の高速道路交通量」であったりと実に多種多様。
そんなビッグデータを取り扱うための仕組みとして、一番認知されているのが今回取り上げます「Hadoop」です。
Hadoopとは
Hadoopは、「大規模分散計算フレームワーク」と呼ばれています。
特徴としては、分散ファイルシステム(HDFS)と並列処理フレームワーク(MapReduce)があります。
...
More