リザバー計算 理論編

こんにちはSEC2年目のmasatoです。
業務で機械学習やAIに触れることが多く、積極的に情報を集めています。
その中で、私が注目している技術である「リザバー計算」について書いていきます。

リザバー計算について

早速ではありますが、リザバー計算について簡単に説明します。

リザバー計算は、簡単に言えば

「時系列データを使った分類や予測が低コストで高速に学習できる」計算です。
深層学習モデルよりも低い学習コストで、深層学習モデルに近い計算性能を持っているのが大きな特徴です。

では、どのような仕組みでしょうか。簡潔にいうと

「リザバー計算は、時系列の入力を、リザバーというものを用いて、
入力を時空間パターンに変換し、線形学習器などの簡便な学習アルゴリズム
によってパターン解析を可能にすること

です。流れとしては以下のようになります。

 

おそらく、これだけでは理解できないと思います。
ですのでこの文章を理解できるように具体例で読み解いていこうと思います!

続きを読む

ディープニューラルネットワークのモデル軽量化

この記事は『CRESCO Advent Calendar 2021』 最終日(25日目)の記事です。

こんにちは、CETにて殿堂入りしました井上です。
“CETって何?”と思ったかたコチラの記事(「困ったら必ず助けてくれる人がいる」クレスコの仕組み紹介します)をどうぞ!

さて、アドベントカレンダーも最終日となりました。
12/1から毎日投稿された、様々なテーマの記事はいかがでしたか?
最終日の記事はディープニューラルネットワーク(以下、DNN)のモデル軽量化について書きます。というのもエッジAIへの取り組みを行なっているのですが、そこで得られたことを記事としてまとめておこうと思います。

現在のDNNは、層の数が多く膨大なパラメータが含まれる傾向にあります。このような巨大なDNNは計算量、メモリ、電力など多くの資源を要求しますが、計算資源の限られたエッジデバイスで動かすには限界があります。
こうした課題をクリアするモデルの軽量化について解説します。

続きを読む

AI初心者をUdemyで効率よく卒業するルートを実体験ベースで考えてみた

この記事は『CRESCO Advent Calendar 2021』 7日目の記事です。

はじめまして。SEC3年目の髙橋(良)です。
突然ですが、
「AIやってみたいけど、どこから取っ掛かればいいかわからない!」
「AI興味はあるけど難しそう」
こういう風に思っている方、多いのではないでしょうか?

私も「AI興味あるけどなんとなくしかわからないからとりあえずG検定の勉強してみよう!」と思い、去年勉強しましたが正直よくわかりませんでした・・・
ですが、今期に入ってから改めて勉強し、自分なりに理解しG検定を取得しました。

今回は私のような「AIよくわからない・・・」という状態から、Udemyを活用して効率よくAI初心者を卒業する方法を実体験ベースで紹介します。
弊社では申請すればUdemyを無料で利用できる(ありがたい・・・!)ので、学習にはUdemyの講座を利用します。
AI理解してるよ!という方は、最後のBERTを実装してみた話だけでも読んでいただければと思います。

続きを読む

Optical Flowを使用して物体の移動軌跡を描画してみた話

はじめまして。技術研究所の堀越と申します。

皆さんは動画から物体を検知し、その移動軌跡を取得する方法をご存じでしょうか?        今回は、Optical Flowを使用して物体の移動軌跡を描画するPythonプログラムを作成したので紹介します。

Optical Flowとは

オプティカルフロー(Optical Flow)とは、フレーム間の物体の物体の動きを検出して速度をベクトルで表示する手法のことをいいます。

オプティカルフローは次のような仮定に基づいて計算を行っています。

  • 連続フレーム間で物体の画像上の明るさは変わらない
  • 隣接する画素は似たような動きをする

オプティカルフローの推定法としては、勾配法とブロックマッチング法があります。

【 勾配法 】

画像の時空間微分の拘束方程式による条件からフローベクトルを推定する手法。          短い処理時間で検出できるが、検出の精度が低い。

【 ブロックマッチング法 】

画像をある大きさの領域で分割して次のフレームの画像中を検索し、前フレームの注目領域との類似度が最も高い領域を検出する手法。                               処理時間が長いが濃度値の変化やノイズに強く高い精度で検出を行うことが出来る。

今回のPythonプログラムでは、勾配法の一種であるLucas-Kanade法という方法を使用して実装を行いました。

続きを読む

機械学習をやろうとしたらデータクレンジングに明け暮れていた件(2) ~大量のファイルを分割アーカイブする~

技研のまつけんです。

前回の記事では、複数のアーカイブを展開してファイルやフォルダの名前の傾向を調べる過程を紹介しました。今回は、その逆の「多数のファイルを分活してアーカイブする」ためのシェルスクリプトを紹介したいと思います (前回の「まとめ」では違う予告をしましたが、その前に今回の作業をする機会があったので、先に記事にしました)。

自分がデータクレンジングしたものを誰かに渡すことがあります。その際、メールで送るにしてもサーバに置くにしても、再びアーカイブ (+圧縮) すると便利なのですが、数ギガバイトのzipやtgzだと色々と不便です。そこで、分割してアーカイブしたくなります。それを実現するのに、真っ先に思いつく方法は、a、b、cという3つのフォルダがあるのであれば (そして、3つのフォルダ内のデータ量に偏りが無いのであれば)、

のように

  • aで始まるものは、a.tgz
  • bで始まるものは、b.tgz
  • cで始まるものは、c.tgz

としてしまうことでしょう。

続きを読む

Python用ライブラリ用のwrapperを作って使っている話

技術研究所 (技研) のまつけんです。

Python用のライブラリには、cv2 (OpenCV)、numpy (NumPy)、pandas (Pandas)などがあります。大抵のことが出来るので大変便利なのですが、引数の与え方などで不便を感じることがあります。そこで、今回は、私が普段、それらのライブラリをwrapするのに使っているサブルーチンを紹介したいと思います。

OpenCV用 (wrap_cv2.py)

色の定義

頻繁に利用する色 (無彩色、原色、補色) を定義します。OpenCVはRGBではなくBGRが基本なので、その順番となっています。

続きを読む

機械学習をやろうとしたらデータクレンジングに明け暮れていた件(1) ~フォルダ・ファイル名の傾向と対策~

技術研究所のまつけんです。

今回はデータクレンジングの話です。データクレンジングというのは、データを機械学習に流し込む前に全体的に眺めて、必要なら整形する作業です。KaggleやSIGNATEなどのコンテストではクレンジングされた状態のデータが提供されますが、実際の業務では、必ずしもそうとは限りません。そして、それはデータの中身に限った話ではありません。フォルダやファイルの名前が一定の規則に従ってない場合、それを規則的な名前にするところから始まります (規則的な名前でないとループなどで処理したりするのに不便です)。

機械学習に使う大きなデータをよそから転送する際、たいてい、DVDやアップローダなどで受け取ります。後者の場合はzipなどでアーカイブ (および圧縮) されていることが多いのですが、zipファイルが数十個ある場合もあります。今回の記事では、転送したデータを確認し、フォルダ名、ファイル名などを扱いやすい形に変換する過程について、説明します。データ数が膨大な場合を想定していますので、多くはbashスクリプトにより自動化しています。といっても、UNIX/Linuxをインストールする必要があるわけではありません。今から紹介する手法はcygwin上で行うことを想定しています (スクリプトは全てcygwinのbashで動作確認しています)。

今回は、機械学習用のデータについて、フォルダ構成を確認し、必要に応じて整形する手順を紹介したいと思います。

続きを読む

OpenCVでレシートを適切なサイズに縮小する

技術研究所 (技研) のまつけんです。

リモートワークが増えたことで、会社に領収書やレシートの写真を提出することが多くなりました。紙のレシートを、スキャナやスマホで電子化する (画像ファイルにする) と、不必要に高精細な画像になってしまうことが多いように感じます。そこで、今回は、レシートの写真を自動で、文字が判読できる範囲内で縮小する (解像度を落とす) Pythonプログラムを作成してみました。機械学習などは使わず、OpenCVとNumPyだけで画像処理によって実現しています。

続きを読む

白黒はっきりしない判定の評価のしかた 〜ROC曲線と AUC〜

技研の (あ) です。

最近すっかり医療系の話に関わることが多くなってます。疾患の有無の判定などを行う際の性能指標について、これまで「感度とか特異度とか」「F値と平均的でない平均の話 〜あるいは調和平均の使いどころ」といった記事を書きました。

今回はその続きで、ROC曲線 (ROC Curve) と AUC について説明したいと思います。ROC曲線の話に行く前に、まずは判定の結果出てくる値に関しての話からです。

続きを読む

調和平均とハーモニー、と新たな謎

[前回までのあらすじ]
実は調和平均とは算術平均の裏返しであった。分母にあたるものが同じ場合の平均を考えるのに算術平均が適切であるなら、分子にあたるものが同じ場合の平均を考えるには調和平均が適切で、分子分母が逆転している以外は同じと言っても過言ではなかったのだ…。

技研の(あ)です。前回は F値と、その計算に使われる調和平均 (Harmonic Mean) ってどういうもの? という話を書きました。ところでなんでこれって「調和」平均って言うんでしょうね?

ということで今回は前回の補足的にそのあたりの話を書きます。
(が、そこから話は意外な展開に…?)

続きを読む