半年ほど前、久しぶりにラズパイを引っ張り出してセットアップまでしたのですが、なんとなくやる気が起きず、そのまま放置しておりました。。。
これではいけないと、少し反省して、ビットコインFX自動売買システム(別名、ウハウハプロジェクト)について、ちょっと真剣に考えてみました。
そして、今はディープラーニングを勉強中です。
自動売買のシステム基盤を作るのは簡単、問題はアルゴリズム
ビットフライヤーAPIを使えば、マーケット情報の取得、売買などは簡単に構築できます。
問題はその売買アルゴリズムをどうするかです。
このブログでも自慢していたように、去年の前半ぐらいまではFXの手動売買でもそれなりに稼げていました。
そのときは、その手法をそのままプログラム化すればいけるかも?と思っていたのですが、やはり甘かったです。
ここ最近はFXで負けが続き、今年の戦績はついにマイナスまで落ち込んでしまいました。
今でも、FXでコツコツと稼ぐことはできるのですが、損切りの判断がイマイチ甘く、ときたま大きなダメージを食らってしまいます。
この損切りだけでもキチンとプログラムできれば、うまく稼げそうな気もしているのですが、ちょっと自信がありませんでした。
といって、このまま放置していても何も始まらないので、取りあえず切っ掛けを掴むため、先週ぐらいからディープラーニングを勉強しています。
今更感はあるのですが、うまく学習させることができれば、まだまだFXでも勝機はあると思っています。
ただ、機械学習に対する私の知識が圧倒的に足りていないので、今、猛勉強中です。
調査ごとには、Kindle Unlimitedはものすごく便利
最近では、ネットで検索すれば大抵のことは見つかるのですが、見つかる情報は断片情報が多く、基礎知識が無い状態だとものすごく辛いです。
そこで、最近、私はKindle Unlimitedをフル活用しています。
《参考記事》 Kindle Unlimitedを7ヵ月間使ってみて「おすすめ具合」をまとめてみました
Kindle Unlimitedでは、対象本が少なくて使えないとよく言われるのですが、実際に検索してみると、どんな分野でも取りあえず何冊かはリストアップされます。
確かにクズ本も多いのですが、あまり吟味もせずに片っ端からダウンロードして読めるところがUnlimitedの最大のメリットです。
もし、それがクズ本だったら、即削除して次の本を読み始めるだけです。
今回、Kindle Unlimitedで機械学習関連の本を探してみると、意外にたくさんありました。
- ビジネスで使う機械学習
- よくわかるディープラーニングの仕組み
- マンガでわかる人工知能
- PyTorchで学ぶニューラルネットワークと深層学習
- Thinking Machines 機械学習とそのハードウェア実装 (NextPublishing)
- AIは考えない-人工知能の現実: ディープラーニング、機械学習、ニューラルネットワーク.IT初心者の入門書 CAMBRIC
- Pythonで実装、はじめての機械学習: 単純パーセプトロン、ニューラルネットワーク、ディープラーニング
今、読み漁っているところで、先週は3冊ほど読んでみました。(1冊はほとんど読まずに削除しました。。。)
そして、その分野がだいたい分かってきたところで、まだ足りないようならそのとき、改めて本を買うようにしています。
ただ、最近はUnlimitedだけで事足りることも多く、本を買うことがめっきりと少なくなってきました。
ある程度、その分野の知識が付けば、後はネットで調べまくって知識を増やしていくパターンです。
特にプログラミングなどは、本を読んでいるだけでは絶対にマスターできません。最後は、実際にやってみないとスキルが上がらないのです。
とりあえず、ラズパイにTensorFlowをインストール
最終目標はFX自動売買なので、とりあえずラズパイで動かしたいと思っています。
また、ディープラーニングのオープンソースと言えば、GoogleのTensorFlowが一番初めに出てくるので、とりあえず、これから勉強することにしました。
そこで、さっそくサンプルプログラムを動かしてみようと、さっきやってみると案外簡単に実行できました。学習済みのサンプルを動かしただけなので、当然なのですが。。。
こちらのブログを参考にさせてもらい、その通りにやるとあっという間でできました。
私の環境は、以前に作ったものです。
- Raspberry Pi 2 Model B
- Ubuntu MATE 16.04
《参考記事》 ラズベリーパイにUbuntu MATEをインストール、日本語化でちょっと躓きました
これに以下のディープラーニングソフトをインストールするだけです。
- TensorFlow(Googleの機械学習オープンソースライブラリ)
その他、インストールしておいた方がよいライブラリということで、以下も一緒に入れておきました。(いくつかは既にインストール済みでした)
- keras(上記を使いやすくラッピングしたもの。最新のTensorFlowには含まれているようなのですが、今回はTensorFlow1.1を使ったので別途インストールが必要)
- Open CV/PIL(画像処理ライブラリ)
- pandas/matplotlib(グラフ作成ライブラリ)
TensorFlowは自前でビルドするとものすごく時間がかかるらしいので、今回は、Githubに公開されているラズパイ用のTensorFlow1.1バイナリをインストールします。
$ wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp27-none-linux_armv7l.whl $ sudo pip install tensorflow-1.1.0-cp27-none-linux_armv7l.whl $ sudo pip uninstall mock $ sudo pip install mock $ sudo apt install python-imaging $ sudo apt install libopencv-dev $ sudo apt install python-opencv $ sudo apt install python-pandas $ sudo apt install python-matplotlib $ sudo apt install python-h5py $ sudo pip install keras
途中で、pip(Pythonのパッケージ管理システム)からバージョンが古いと言われたので、言われるがままにバージョンアップしたところ、pipが使えなくなり焦りました。。。
You are using pip version 8.1.1, however version 10.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
ネットで調べても中々わからなかったのですが、どうも新しいバージョンではpipのインストールディレクトリが変更されており、キャッシュ削除しないといけなかったみたいです。
以下のコマンドを叩くと復旧しました。お気を付け下さい。
hash -d pip
TensorFlowの公式サイトでお勉強
先ほどのブログでは、公式サイトのチュートリアルで勉強するのが最強とありました。
《公式サイト》 Tutorials
まだ、全然お勉強できていないのですが、とりあえず、今回はサンプルアプリを一つ動かしてみました。
Image Recogitionという画像認識ライブラリで、サンプルではパンダの画像認識をやってます。
$ git clone https://github.com/tensorflow/models $ python models/tutorials/image/imagenet/classify_image.py
結果:
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107) indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779) lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296) custard apple (score = 0.00147) earthstar (score = 0.00117)
scoreが0.89107で見事にパンダと認識しました。ただ、実行に50秒近くかかります。
また、「–image_file」で他の画像を指定できるので、試しに、ネットでライオンの画像を落としてきてやってみると、キチンとライオンと認識しました。
lion, king of beasts, Panthera leo (score = 0.91605)
動物の認識率はさすがにすばらしいです。
ちなみに、以下はまったくダメでした。なぜか、hair spray (score = 0.36358) 「ヘアースプレー」と認識されました。
たぶん、対象物が小さすぎるのでしょう。それにしてもなぜ、ヘアースプレーなのか?
まとめ
ディープラーニングについては、まだ全くの素人なのですが、中々面白そうです。
昔々、大学生の頃にはニューロン学習も勉強したことがあるのですが、今とはまったく違いますね。
とりあえず、自分で機械学習できるところまで早く持っていきたいです。
あと、ラズパイももう少し有効活用したいので、電子工作キットでも買ってみようかと思っています。
アマゾンで調べていると、いろんなセンサーが安く売られているので、なんだかワクワクしてきますね。子供の頃にハマっていた電子工作が懐かしいです。