ETLの基本的な機能

ETLはExtract(抽出)、Transform(変換)、Load(格納)の頭文字をとったもので、データ統合時に発生する各プロセスを意味します。

ETLの基本的な機能は次の2点です。

  • データ処理機能
    実務処理ではデータの処理が多く行われます。
    ETLにはデータ処理のために、文字コードの変換、特殊文字の置換、フィルタ機能、複数データの結合、任意の列の追加、集計(合計値や平均値の算出)等、多くの機能が搭載されています。
  • 外部機能との連携
    ETLからスクリプト実行やバッチファイルの呼び出しを行うことで、他のツールを起動することができます。
    またデータベースとの連結ができるコネクタと呼ばれる機能がついていて、データベースのトランザクションデータやマスタ類を利用して、最終的な成果物を作成できます。

完全無料で使える唯一のRPAツール

RPAツールはいろいろありますが、基本的に数十万から数百万円かかるものがほとんどでなかなか手が出しにくい現状だと思います。

ただそんな中、唯一完全無料で使えるRPAを見つけることができました。

SikuliXです。

SikuliXはOpenCVを利用したオープンソース・ソフトウェアのGUIオートメーションツールです。
操作対象を画像としてマッチングするため、スクリーン上に表示されているものであればアプリケーションの種類を問わず操作することができます。
開発環境が付属していて画面上の特定の場所をクリックしたり、テキストボックスに文字入力したりといった人間が行う操作を記述することが簡単にできます。

開発環境では画面のキャプチャリングや、どのうように画像がマッチングしているか容易に確認・調整することができとても使い勝手がいいです。

処理はスクリプト(JythonかJRuby)で記述するのでプログラミングの経験は必要となります。
RPAはプログラミング不要で処理が記述できることをメリットとしてうたっていることが多いですが、正直プログラミングができる人にとっては処理をGUIで処理を組み立てていくのはまどろこっしくてはかどらないので、スクリプトで記述できるというのはいい仕様だと感じています。

バージョン1では操作の記録ができませんでしたが、バージョン2からは操作を記録してスクリプトを自動作成することができるようになったようです。

実行するためにはJVM(Java)が必要となります。

RPAの認識タイプ

RPAには3つの認識タイプがあります。

  • 座標指定
    操作対象画面の2次元座標データを記録する方式です。
    ロボットの実行時に座標データを呼び出してボタンなどの位置を認識させて動作します。
    座標指定の方式は、操作対象画面の大きさや表示位置が変わると誤動作するという問題があります。
  • 画像認識
    操作対象を画像データとしてキャプチャーし、RPAの開発画面に登録する方式です。
    ロボットの実行時に画像データを読み込み、画面上の画像とマッチングして対象を特定し、入力やクリックなどの操作を行います。
    座標指定方式と違い、ボタンの位置が変わっても画像が同じであれば、修正せずに対応できる利点があります。
  • 画像要素認識
    入力欄やボタンといった画面の要素をHTMLファイルやアプリケーションそのものから読みとって記録する方式です。
    見た目ではなくHTML等の内部構造を解析して実行されるので、画面レイアウトや見た目が変わってもHTMLファイルやアプリケーションの構成要素が変わらなければ問題なく動作します。

RPAを構成する3つの要素

RPAには目や手というロボット的な部分があり、それを駆使して人間のパソコン操作を代行するようなイメージがあります。

RPAには次の3つの要素があります。

  • 目に相当する部分
    画面を見て必要な情報を見つける。
  • 手に相当する部分
    コピー&ペーストやキーボード入力を行う。
  • 脳に相当する部分
    手順を覚える。

これまでのソフトウェアはコンピュータの深いところで実行されているので実行の様子を見ることはあまりなかったと思います。

これに対してRPAの実動作をみると、画面上でカーソルや画面がひとりでに変化していく様子を見ることができ、人間的な雰囲気を感じることができます。

RPAの特徴

RPAの特徴は、企業内にあるいろいろなシステムやアプリケーションを変更することなく対応が可能なことです。

具体的な特徴は以下の通りです。

  • 自動化
    人がキーボードやマウスで行っている業務の自動化が可能。
  • 反復・高品質
    24時間365日常時稼働が可能。
    ミスをすることもないので品質が向上。
  • 既存の業務システムの変更が不要
    RPAでは行う動作を定義するので、既存の業務システムやアプリケーションを変更する必要がない。
  • いろいろなアプリケーションへの対応が可能
    Office製品だけではなく、社内システムや社外のWebアプリケーションなど幅広いアプリケーションへの対応が可能。
  • プログラミング不要
    RPAはプログラミングが不要なため、プログラミング経験のない業務ユーザであっても、研修や支援を受けることでRPAツールを利用した自動化処理を進めることが可能。
  • 複数ロボットの管理が可能
    個別のパソコンで処理を行うことも可能ですが、複数のパソコンでのRPAロボットを集中して管理することが可能。

RPAとはなにか

RPAは、「Robotic Process Automation」を表します。

従来は人間のみが行うことができると考えられていた事務作業を代行する高度化したソフトウェア群(ソフトウェアロボット)及びそれらの行為を利用した業務改革手法です。
パソコンを操作してアプリケーションを扱う各種業務を代行し、デスクワークを効率化・自動化します。

Unity ML-Agentsの学習シナリオ(2)

Unity ML-Agentsでは「Agemt」「Brain」「Reward」の組み合わせによっていろいろな学習シナリオを実現することができます。

  • Cooperative(協同) Multi-Agent
    「共有報酬」を受け取る複数のAgentに、1つまたは複数のBrainがリンクされている学習シナリオです。
    複数のAgentが協力して1つのタスクを解決します。
    (例)部分的な情報にしかアクセスできないAgentが共同でパズルを解く。
  • Competitive(競争) Multi-Agent
    「逆報酬」を受け取る複数チームの敵対した複数のAgentが1つまたは複数のBrainにリンクされている学習シナリオです。
    Agentが競争に勝つか、または限られた数のリソースを獲得するために互いに競争します。
    (例)サッカーのストライカーとゴールキーパー
  • Ecosystem(生態系)
    「独立報酬」を受け取る複数のAgentが1つまたは複数のBrainにリンクされている学習シナリオです。
    さまざまな目標を持つAgentが相互に作用する小さな世界を創造します。
    (例)サバンナの中の動物たちの自立シミュレーション

Unity ML-Agentsの学習シナリオ(1)

Unity ML-Agentsでは「Agemt」「Brain」「Reward」の組み合わせによっていろいろな学習シナリオを実現することができます。

  • Single-Agent
    1つのAgentに1つのBrainがリンクされている学習シナリオです。
    一番シンプルなシナリオで、シングルプレイヤーゲームがこれにあたります。
  • Simultaneous(同時) Sigle-Agent
    「独立報酬」をもらう複数のAgentが1つのBrainにリンクされている学習シナリオです。
    Single-Agentの並列化バージョンで、スピードアップと安定化ができるようになります。
    ナルトが多重影分身で修行しているような感じです。
  • Adversarial(敵対) Self-Play
    「逆報酬」をもらう敵対した2つのAgentが1つのBrainにリンクされている学習シナリオです。
    2人プレイのゲームでAgent同士を対戦させることで学習を行うようなケースがこれに適応します。
    (例)テニスのプレイヤー

ドロップアウト

ドロップアウトは層の中のニューロンのうちいくつかをランダムに無効にして学習を行い、パラメータが多く表現の高いネットワークの自由度を抑えることで、モデルの頑健性を高めます。

最適化

機械学習や深層学習において、「学習」とは予測の誤差を最小化・最適化することを意味します。
最適化とは、与えられた関数を最小または最大にするようなパラメータを見つけることです。

機械学習とは、予測の誤差を最小にするパラメータを見つけることと言い換えることもできます。
TensorFlowでは勾配法という手法を使って関数を最小化します。