スキップしてメイン コンテンツに移動

人工知能(AI)のお仕事って一つ?

最近流行ってる人工知能(AI, Artificial Intelligence)のお仕事
全てが同じ?
だと思ったら問題あります。

まずAIを語る前にデータ分析のお話から始めましょう。

データを分析するとき必要な分野は大きく3つに分けられます。


Data Analyst:数学と科学専門のデータだけ分析できる人
Domain Specialist : 該当分野のビズネスをはっきり分かってデータが意味するのを分かっている業界専門家
Hacker : コンピュータ専門のサーバーとデータストレージを自由にコントロールできる人。

この中でDomain Specialistは元々その業界にいるのであまり気にしてません。
今一番Data Scientistとして知られているのがData Analystです。
この人はMLライブラリを利用してデータを回すだけ。もちろん経験によって分析の品質と分析の方法、手順が変わって全然違う結果になってしまいますが、これはある程度決まってました。

実は、これだけでありません!

データ収集専門家:

必要なデータの大半はインターネット上にあるのであれを大量に持ってくる技術をCrawlまたはScrapingと言います。今までは検索エンジンなどでしかあまり使ってないですが、現在はMLでは必ず必要な部門になりました。
インターネットからHTMLデータを抽出してURLをParsingしたらイメージ、リンクなどを分けてまたCrawlを続け必要な本文だけ持ってくるのにかなりの経験が必要です。
これが前処理の最初に必要な技術でこれだけの専門家がいます。
一つの検索エンジンからたくさんのリクエストをしたりするとブロックされるのでProxyを自由に利用するとかの細かい経験が必要な分野です。技術力より経験が必要な部分ですね。

自然語処理専門家(言語処理専門家):

次は拾ったデータと元々あったデータの中で言語から必要な単語抽出及び基本形を単語とか名詞だけ抽出するのがNLP(Natural Language Processing、自然語処理)で前処理専門家の技術の一つです。この人がLDA(https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation、潜在的統計トピックモデル抽出手法)などもやって本文の内容から言いたいトピックなども抽出したりして文章のカテゴライズを最初に行ったりもします。

ML専門家(データ分析専門家):

その次が実際データを利用してMLモジュールを流すML専門家。
MLモジュールがやってるから実際やることないじゃない?と思ってる方もいらっしゃると思いますが、かなり多いMLモジュールの中でどのような方法でどの順番でやった方がいいか、Supervisedが必要な時どこでMLにTagを教えないといけないか、人の手間がかからないTagging手段はあるのかを考えないと行けません。
単純に銀行から貸出できる人を選ぶにLogistic RegressionだけしていいのにWord2Vecを使ってたりする無駄を省くのもここでやるべきの仕事です。
業界スペシャリストと共同にデータを見ながらやらないと時間がかなりかかります。
この経験が足りなくて1次データの検証だけで3ヶ月掛かったことも実際ありました。

Front開発者:

そのあとデータの視覚化などはWeb関連になるのでData Scientistには含まれてないですが、Data Scientist関連企業では必須です。
Bootstrapなどを利用しえいかにVisualizationがしやすくなるのかによっていいデータでも売れなくなったとか、よくないデータでも売れてるとかします。
この分野の人は「Web Front開発者」と言います。

これで終わりと思ってる方が多いと思いますが、Hackerという分野が残ってます!
Hackerというところは未だにも分かってないところが多いでしょう。

Hacker(システム専門家・アーキテクト):

Cloudになってきて自由に拡張できるストレージとコンピュティングパワーということはもっと管理が難しい状況になって必要な時数PB(Peta Byte、1PB ≒ 1,000,000GB)のデータストレージが生成できて必要なくなったらすぐなくせる、そしてデータの整合性を維持する、並列コンピュティングプロセスを管理し余裕コンピュティングパワーを他のジョブに任すとかの仕事は今までサーバー何百台位での話ではなくなりました。

例えば1番サーバーにCPUを100%使って100TBのデータを読み込もうとしました。しかし、サーバー間のネットワークが10Gbpsです。100TBのデータをストレージから読み込むだけで約100,000秒(約28時間)かかります。そしてMLをします。書き込みます。1週間かかっても終わりません。

といことが多いです。(実際にあった話です。)

データの容量が大きくなるほどデータの管理技術によって維持費用は全然変わります。
例えば、私のお客さんのところに実際の話です。

現在のデータは75TB、増え続けてMLまで含めて5倍の375TBまでデータが必要です。
それで5年間データを収集するとして1.76PBを用意しました。
SIerさんからの見積もりは約8億円
私なら1億円以下で抑えられます。勿論この以下にも抑えられる方多いと思いますが、速度の維持及びメンテナンス・運用サービス含めての話です。

高速データ伝送及びPreloadingというCDN(Contents Delivery Network)技術そして地域毎に分散されたデータの整合性を維持しながらreplicaを作る方法それを負荷分散するGLB(Global Load Balancing)技術等。
これが分散技術の力だと思います。

このアーキテクチャを作れる人がData ScientistのHackerと呼ばれる部門ですね。

コメント

このブログの人気の投稿

コピペができないときチェックすべきこと! :: よく迷うUiPathのコツ

UiPath( https://uipath.com )はMicrosoft社のWWFを改良した製品なのでVisual Studioより初心者向けに使いやすくなっている。 しかし、初心者がそのまま使うにはかなりのハドルがある。 理由は基本開発者向けの開発ツールを無理やり便利に作ってみたとしても開発の概念と考え方がないと結構躓くことが多い。 そのなかで私もよく迷ったりしていることの一つを整理しとく。 基本Activityはすぐコピぺができるので多数のUiPath Studioを開いて開発してたりする。 ここでコピペをしても反応ないときがよくある。 この場合はこれをチェックすること! 1.Sequenceがなく一つのActivityしかないところにはペーストできないのが多い。 例えば、ifの処理ボックスにはSequenceが最初はない。 そのボックスに一つのActivityはペーストできるのに2個目からはなぜか反応ない。 それで分からないまま新しいActivityを追加してたりしたが、 あそこにSequenceを入れたら解決ができるのだ! 2.正常にペーストできるはずのところに反応ない。 この場合はPackageが合わなくペーストが効かないケースが多い。 DESIGN>Manage Packagesをクリックしてコピー元のパッケージにインストールされているのにコピー先にインストールされてないパッケージを探す! パッケージを一々見るのが難しい!と思ったら メモ帳からファイルがあるフォルダにあるproject.jsonファイルを開いてみる! あそこにJSONの形式でインストールされたパッケージが見えるので比較しやすくなる! ちなみにコピペをすると変数の宣言が大変だと思うが、 そこでもコツがあるのだ! 変数の宣言はなるべく細かくしてSequence単位で管理できるようにする。 全てに影響がある変数はしょうがないから一番広く宣言するけど。 初心者向けの説明だと、 Variablesというところをクリックして変数を開いたらScopeという範囲が見える! 大体Sequenceボックスの名前を変えてないのでSequenceがすらりと表示されてるはずが、Sequenceボックスの名前を付けてたら見やすくなる。 あ

面倒くさいORACLEの文字化け状況

ORACLEはそもそもUTF-8をサポートしてほかの言語はサポートはしているって書いてますが親切ではないようです。 現在サーバー側は昔からUS7ASCIIに設定して日本語を入れてしまい、データは7ビットASCIIモードで読み取りながら日本語のコートがOS側とクライアント側で変換しない必要があります。 クライアント側で文字化けの解決にはNLS_LANGの設定が効くクライアントが必要ですが、一部の有料クライアントにはサポートするようです。 接続構造は参考に https://www.oracle.com/technetwork/jp/content/charcterset-250314-ja.pdf の19スライドのように クライアントからNLS_LANGをUS7ASCIIに設定しても その設定した言語にもらったUTF-8のデータをクライアントが変換すると NLS_LANGを設定しても意味がないようです。 ORACLE SQL Developerがこの様です。 ODBCと直接接続は必ずUTF-8に変換してしまうのでUS7ASCIIになっているDBからはクライアントをいくら変換しても文字化けのままです。 必ずOCI接続を通じてクライアント側から読み取らないとUS7ASCIIは勝手に変換されますね。 この全ての条件が満たした無料クライアントはA5mk2の2.9.1バージョンだけですね。 A5MK2 ver.2.9.1 : https://a5m2.mmatsubara.com/download/a5m2_2.9.1_x64.zip 2.9.1 バージョンでサーバーを設定する場合Uicode変換を強制に無視するオプションがあります。 多分このバージョンの時点ではUTF-8をメインにして設計したDBが少なかったから文字化け対応のためできたオプションでしょう。 しかし、A5mk2の新しいバージョンにもまた結果の変換をしないオプションがなくなって文字化けしてしまいます。開発者はもうUTF-8ではないDBはないと思ってるでしょう。まだまだ残ってますよ~。 クライアント側からの変換などに参考になればと思います! まだ直接お仕事になさってますか? もう遅いです!ソフトウェアロボットにお仕事を任せてどの位自分の作業分量が減ってるかをご確認ください! https://talklowy-jp.b

英語をより楽に勉強できる方法

英語ができなくて良い機会が失われた経験があるでしょう。 GoogleさんもMicrosoftさんも英語で面接をしてます。 私がエンジニアですが技術より言語の学びが優先だと思います。 知り合いの中で技術は低いが英語が上手い人が私より良い道を歩いてます。 それは会話ができなければ技術も通じないとのことでしょう。 それで色々お試ししましたところ 情報を公開しようとしてます! まず、 Khan Academy( https://www.khanacademy.org/ )に入会! これはSalman Khanという人が自分の親戚に数学を教えるために試したやり方が色んな人が参加してグーグルさんとマイクロソフトさんが投資をした 完全無料教育サービス です。 しかし、これは英語でしか話してないので初心者の方には無理があるでしょう。 それでも、この記事をお読みになられた方は基本的な文法は学んだ方だと考えときます。 そして TEDアプリ( https://www.ted.com/ ) をダウンロード。 日本語の字幕がある映像の中で自分の好みの映像を選んでください。 有名なスピーカが話したことが多いので話し方など良い勉強になります。 次は MeetUp( https://www.meetup.com/ja-JP/ ) でしょ。 英会話グループを探して加入。 自分のレベルに合わせて参加してら良い友達もできるし勉強にもなります。 電車で単語ばっかり暗記している方が見つかりますが、 それも悪くは無いけど効率はどうかと思います。 やはり勉強は楽しく!自分の好みでは無いと! 映画も良いしドラマも良いです。それともゲームとか旅行もあるでしょう。 自分の趣味から始めるのが大切だと思います。 もしドロンが趣味だとしたらわざわざググってみる。 そして英語のページから探すんです。 最初は無理があるけど好きなイメージなどが見つかったら読みたいでしょ? そのページをスクリーンショットかプリントでも良いです。 その文書の単語を探して読んでみるのが第一歩ですね。 最初は辛いでしょ。 私の場合には最初には単語10個だけ探しました。 1日10個だけ辞書から探して残りは捨てる。 さらに10個をその場で暗記してそれで終わり。 翌日3~4個し