nikkie-ftnextの日記

イベントレポートや読書メモを発信

イベントレポート |【サポーターズ勉強会】機械学習入門

はじめに

だんないよ、nikkieです。
年が変わってから機械学習案件に配属され、日夜勉強中です。
抱えている疑問を解消できるかと「機械学習入門」という勉強会に参加してきました。

勉強会の概要

【サポーターズ勉強会】機械学習入門 - サポーターズCoLab

イベント概要

非エンジニア&機械学習を詳しくは知らないエンジニア向けの機械学習入門講座を
エンジニア向けにリメイクしてお届けします。

 AI・機械学習を正しく理解し、表層的な情報に惑わされず、使いこなしてほしいという前置きで
勉強会が始まりました。
以下、勉強会中のメモをもとにしたイベントレポートです。
なお、今回の発表は個人の意見であり、所属組織を代表するものではないそうです。

第一部:機械学習とは

  • 教師あり学習:赤ちゃんに教えるイメージ これは猫だよ
    例:スパムフィルタ スパムか非スパムかというデータから判定器を作る→未知のデータを判定
    世のサービスの8割
  • 教師なし学習:特徴が似たグループを見つける(特徴が似たグループが◯個あるということしかわからない)
    例:インスタの投稿解析 2つのグループに分ける
     →人間がこのグループはXXの写真とラベルを付ける
    教師ありと組合せて使われる
  • 強化学習:初期ルールと報酬だけ与えて学習させる しらみつぶしに計算させる
    迷路左手で壁を触って進むと20s 右手だけだと30s 左手+αなら。。。
    ルンバに使われている(掃除可能な床をすべて探索)スタート地点や家具の配置を変えると学習し直し

実例

YouTubeの推薦システム、アルファ碁

第二部:機械学習は万能か

→万能ではない

機械(AI)がなんでもやってくれるわけではない

何ができるのか

前提:大量に蓄積されたデータの中から

  1. 規則性を見つけ出し判定器を作る
  2. データをグループ分けする(クラスタリング
  3. 途中でルールが変わらないなら最適解を見つける(将棋や囲碁

機械学習でできないこと

  • データを集めること
  • データにラベルを付ける
  • 学習方法を決める

回し方

  1. 何をさせるのか決める(実例:ワインの等級を判別)
  2. データ集める
    データセットが公開されている
  3. データ前処理
    特徴量定義(数値に落とし込む)
    特徴量を絞る(主成分分析)
  4. 学習モデル選択(ワインの例は線形モデル)
    直線で切るか、曲線で切るかというイメージ
    13個の特徴量から2,3個選択する:超重要 完全に分けられる線を見つけた
  5. 評価方法を決める
    精度か、時間か、開発コストに見合うか
  6. 判定器(予測装置)の生成 ここだけが唯一機械だけでできること
  7. モデルの評価
    改善サイクルを回すのが非常に重要
    一回作った判定機が間違ったらフィードバック ←誤差の修正の仕組みがある

どんな判定機ができているか可視化できるのは目からウロコでした
(この線より右なら等級A、左なら等級B)


ワインの等級判別の例は以下のサイトなどもあるようです。

SGD(クラス分類)【Pythonとscikit-learnで機械学習:第1回】

 

おわりに

AIに代替される職業が話題になったが、AI vs 人間という構図ではなく
データやAIを活用しない人間 vs AI・機械学習を使いこなす人間 に分かれるのではないか

AI・機械学習を使いこなすには

  1. AI・機械学習を正しく理解する
    進化のスピードにキャッチアップ(何ができて何ができないかの認識を絶えずアップデート)
  2. サービス設計段階で将来的なAIの活用を想定しておく
    どこをAIに任せるか、どんなデータを集めるか
  3. 教師あり学習をしたいなら、例えばリアルタイムにデータにラベル付けできると助かる

業務として扱った時の課題

  1. イデアとAIが結びつかない
  2. 機械がなんでもやってくれると思い込んでいる できないと言っても理解してもらえない
  3. データがあると言われたが、Excel, PowerPointで蓄積されていた

解決策

  • モックアプリを作って目に見える形でアピール ←「振り返るとやるべきだった」
  • 機械学習リテラシーを向上させる

1がクリアされるとアイデアはめちゃくちゃ出てくる
2がクリアされるとコミュニケーションコストが減る
データはExcelと形式が近いスプレッドシートにためてもらう

学習法

 

以上です。

入門ということでバリバリ機械学習している方は少なめだったように思いますが、
情報交換して疑問点が解決でき、貴重な機会となりました。
参加者・運営者の皆様、どうもありがとうございました。

イベントレポート | みんなのPython勉強会#31 #stapy

はじめに

遅くなりましたが、明けましておめでとうございます。nikkieです。
本年もアウトプットを継続していきます。
今回は「みんなのPython勉強会#31」にお邪魔してきました。
2018/01/24 勉強会の資料を追加しました。

勉強会の概要

みんなのPython勉強会#31 - connpass

概要

「みんなのPython勉強会」では、Pythonを中心としてプログラミングを仕事、研究、趣味など様々なシーンに生かす方法を一緒に学びます。プログラマ、WEBエンジニアに限らず、初心者からマスターまで様々なレベルの、いろいろな分野の人が集まるので、「みんな」の勉強会です。お気軽にご参加ください。

 31回のテーマは「オープンソースを武器にする」だそうです。

勉強会プログラム

Pythonでスタートして、Pythonを仕事にするまでの話」

量子コンピュータプログラミング入門」 

python人工知能」 

Pythonを書いて食べていきたいと最近夢想しているので
Pythonでスタートして、Pythonを仕事にするまでの話」を楽しみに参加しました。

以下、講演中のメモをもとに振り返ります。

Pythonでスタートして、Pythonを仕事にするまでの話」

gitpitch.com

「火を焚べ続けるのに必要な3つのこと」のうち素振りの話が特に印象に残りました。実践していきます。
・興味があったらすかさず手を挙げる
・チャンスを逃さないために日頃から素振り
Pythonへの興味と情熱

以下講演内で興味をひいたトピックです。()は私の感想です。
・コードが書けるエンジニアになりたい(ほんとそれ!)
・LT駆動開発(#stapyはLTしやすそうな雰囲気でした。次回狙ってみます)
・仕事探しでPyConJPのスポンサーをチェック(なるほど)
・コミュニティに入ると技術に対してアンテナを張れる、かつ、エンジニアと繋がれる(本当に一石二鳥)

量子コンピュータプログラミング入門」

qiita.com

量子コンピュータは全く追えていない分野だったのですが、
IBM Qなら無料で使うことができるというので少し身近に感じました。

IBM Quantum Computing で計算してみよう

学習ツールの一つとして紹介されたQiitaのアドベントカレンダーを見ると、
少しキャッチアップできそうです。

量子コンピュータ Advent Calendar 2017 - Qiita

python人工知能

www.slideshare.net

機械学習をここ最近勉強しているため、勉強前と比べて理解できる部分が増えてきた実感があります。(と言ってもまだまだですが。。)

・分類:CNN(画像解析)、RNN(時系列解析)、DQN(自動運転、ゲーム)、GAN(キャラクタ生成)
Deep Learningの他にSVMなど機械学習のモデルを並列で用意して出力のいいところどりをするアンサンブル学習
・文章に対して「政治」「スポーツ」のようなジャンル分けをDeep Learningで行う場合、各ジャンル1万文の学習データが必要

興味深かったLT

www.slideshare.net

ツイッターリツイートをトリガーにして、読むべき論文のPDFをIssueに登録する自動化LTは
GitHubのIssueをTODOリストとして使うという発想に感服しました。
他にはWindowsで環境構築するLTもありました。

WindowsでAnacondaを使う環境を作ってみた

終わりに

Pythonで集まったところ、量子コンピュータ機械学習まで話が広がる会で
すごいコミュニティだ、継続して参加していきたいと感じました。
講演者・勉強会関係者の皆さま、並びに出席者の皆様、どうもありがとうございました。

資料はアップされるそうなので、確認次第更新します。

Azure Machine Learningの初歩の初歩

はじめに

本年もお世話になりました。nikkieです。
気になっていた「Azure Machine Learning」について調べてみました。
今回はまだ触っていません。機械学習についてまとめた記事です。

元にした資料

2017年3月に開催されたNSStudy #11の動画や記事を元にしました。
(公開していただきありがとうございます!)

講師の畠山さんのスライドを探したところ、以下のものが近かったです。

www.slideshare.net

 

機械学習とは

機械に学習させること。
=データの中のパターンをコンピュータに探させる
→そのためには人が機械に答えを教える必要がある

機械学習では過去にないパターンにも答えを出そうとする。
→if文を書いて実装するのとは異なり、機械学習では汎用性が得られる

機械学習統計学に基づく。

機械学習の主な用途

  1. 回帰(Regression);値を予測する 教師あり学習
  2. 分類分け(Classification):分類を予測する 教師あり学習
  3. クラスタリング(Clustering);データの構造を理解する 教師なし学習

 

注意点

・機械に学習させる上で、人間が判断するべき箇所がある。

  • データ(CSVを想定)の中でどの列を解析に使うのか
  • データの分布に対してどのような境界線を引くのか
    (例:線形か非線形か=アルゴリズムの選択)

・データの用意が一番大変。
 →Azure Machine Learningに用意されているサンプルデータを参考にするとよい

・1件の例外も許してはならないと考えてしまうと過学習(Overfitting)に陥る。
 (過学習=汎用性が損なわれた状態)
 例外が嫌ならif文を書いて実装したほうがよい

・データが増加するとモデルを再度作成する。
 データの加工、モデルの評価を継続的に行う心構えが必要。

・画像や音声の解析は機械学習よりもディープラーニングに分がある

終わりに

機械学習において例外は受け入れるという考え方は勉強になりました。
汎用性との間のトレードオフということなのだと思います。

適切なアルゴリズムの選択には統計の知識がいるので、
使い始めるのは簡単そうですが、使いこなすのが難しそうなツールという印象です。

心構えはできたので、次は実際に触ってみようと思います。

候補

 

イベントレポート | IoT縛りの勉強会! IoTLT vol.34 @ teratail (レバレジーズ) #iotlt

はじめに

コミケ楽しい! nikkieです。
12/26に開催されたLT会のイベントレポートです。
LT会中のツイートを元に興味深いトピック4点を備忘のために残します。
 

勉強会の概要

【増席】IoT縛りの勉強会! IoTLT vol.34 @ teratail (レバレジーズ) - connpass

業界初?! IoT縛りの勉強会/LT会です! 大好評を受けての第34回開催!
IoTというワードがバズワードになりつつあります。
とはいえ、IoT領域には関連する幅広い知識や技術があります。

また、アイディアやインスピレーションも重要です。

この会は個々が持っている知識や開発していることの情報共有や発信の場になります。

IoTに関するLTならなんでもありの勉強会です。
インスピレーションを得るために参加し、
私自身では絶対に浮かばないようなアイデアを毎回楽しませていただいています。
参加者が多いので、ツイッター実況が盛り上がるのも楽しみです。

1. Node-RED

こちらのLTに関連して

speakerdeck.com

Node-REDはIBM Cloud(かつてのBluemix)上でしか使ったことがない立場でツイートしたら、
以下のように教えていただきました。

調べてみたところ、Node-REDってラズパイに入ってるんですね!(2015 Novemberバージョン以降)
ラズパイに標準搭載されてるならプログラミングの敷居が下がりますね。

Node-RED日本ユーザ会 : Running on Raspberry Pi

 

2. TwitterBotAPIとして利用

Google Home大喜利をさせるLT

  1. Google Homeが受け取った文字列をTwitter大喜利Botに投げる
  2. 大喜利Botから回答(リプライ)が来るのを監視し、文字列をGoogle Homeに渡す
  3. Google Homeが読み上げて、大喜利回答

埋もれてしまい見つけられなかったのですが、
このLTに関連して見た「Twitter BotAPIのように使っている」というツイートが印象に残っています。

 

3. Wio LTE

2名の方がLT。SIMを挿せるデバイスで、IoT界隈ではHotなようです。
そのうち1名の方の記事がこちら。

qiita.com

 

4. スマホタップ操作自動化 

発想し、実装しちゃうのが本当にすごいと思います。
各種ソシャゲーも自動化できちゃいそうな気がします。

qiita.com

 

ステータスをTよりもIに振っているエンジニアですが、
LT駆動開発ということで2018年は登壇を目指してみたいところです。

LPIC Lv.1学習メモ | dfとdu

はじめに

だんないよ、nikkieです。
dfとduがセットで選択肢に登場し、どっちがどっちかわからなくなったので
区別の仕方をまとめてみます。

dfとduはこう区別する!

コマンドの成り立ちで区別

df = disk free

ファイルシステムごとの使用状況を確認するコマンド
空き容量も確認できるからdisk free → df

du = disk usage

ファイルやディレクトリが占めている容量を表示するコマンド
使っている容量を表示するからdisk usage → du

以下が参考になりました。

LPICよくある質問集第②回~コマンド由来編~その7 | TECH Projin

df

Man page of DF

df は各ファイルシステムにおいて、 すでに使用中のディスクの量と使用可能なディスクの量を表示する。

du

Man page of DU

du はディスクの使用量を表示する。 対象は指定したファイルと、 それをルート (根) とする階層中にある全ディレクトリである。

 

今後はそれぞれのオプションを調べ、一覧にまとめてみたいと思います。

LPIC Lv.1学習メモ | /proc

はじめに

だんないよ、nikkieです。
先日の勉強会でアウトプットありきにすることを学んだので
現在勉強中のLPIC Level1について勉強メモを公開していきます。

今回は「/proc」についてまとめます。

/proc

以下のMan Pageをもとにまとめています。(引用部分は斜線)
http://linuxjm.osdn.jp/html/LDP_man-pages/man5/proc.5.html

proc - プロセスの情報を含む擬似ファイルシステム

ディレクトリ/ファイル名
説明
/proc/bus
インストールされている各バス用にサブディレクトリがある。
/proc/bus/pci
 
いくつかのサブディレクトリがあり、 PCI バス・インストールされているデバイスデバイスドライバの情報が書かれた仮想ファイルがある。
/proc/bus/pci/devices
PCIバイスの情報。lscpiでアクセスできる
/proc/bus/usb/devices
USB デバイスの情報。lsusbでアクセスできる
/proc/cmdline
ブート時に Linux カーネルに渡された引き数。
/proc/cpuinfo
CPU およびシステムアーキテクチャーに依存する項目を集めたもの
/proc/dma
登録されている ISA DMA (direct memory access) チャネルのリスト。
/proc/interrupts
IO デバイス毎の CPU 別の割り込み回数の記録に使われる。
/proc/ioports
現在登録され使われている I/O ポート領域のリスト。
/proc/modules
現在システムにロードされているモジュールのテキスト形式のリスト。 lsmod(8) も参照。

 

/proc以下のファイルがいろいろなところで出てきて混乱気味でしたが、
1箇所にまとめられてすっきりしました。

つかめていない概念や用語がありますが、学習が進むに連れて、追記しようと思います。

イベントレポート |【サポーターズCoLab勉強会】若手エンジニアが転職に困らないように今から実践できること

はじめに

だんないよ、nikkieです。
「若手エンジニアが転職に困らないように今から実践できること」のイベントレポートを綴ります。
 

勉強会の概要

【サポーターズ勉強会】若手エンジニアが転職で困らないように今から実践できること - サポーターズCoLab

 

こんな話をします

  • 会社から求められるエンジニアの成果、役割
  • 会社にロックインされないスキルを身につける
  • 普段から技術的深掘りポイントを探す
  • ブログ、イベントでアウトプットする
  • OSSへの初めてのコミット
発表者はsasaki nobuyaさんでした。
文系出身のエンジニアということで親近感を感じました。
 
 

まとめ

  1. 会社は社員のキャリアの世話をしてくれない
    自分のキャリアは自分で切り開く

  2. 外で評価されるにはアウトプットしないといけない
    アウトプットありきで業務に取り組む

  3. チャンスをつかむにはコミュニケーション(人付き合い)が大切

アウトプットありきで業務に取り組むという姿勢が非常に勉強になりました。

 

現状

文系出身エンジニア2年目

SIerかWeb系かと言われればWeb系

1年近く製薬・医療分野のウォーターフォール型プロジェクトのドキュメント作業に従事しているが、
実装は1/10の期間もなく、エンジニアとしてのスキルが身についている実感がまるでしない

→開発経験が1年に満たないエンジニアは転職できるんだろうか、
 アウトプットを始めてみたけどどうすれば転職に役立てられるのか

 そういったところを知りたいと、今回の勉強会に参加しました。

 

アウトプットありきで業務に取り組む

  • 業務中の目の前のタスク解決がLTのネタにならないかと考える(自作ライブラリの例)
    →一般的な問題解決を行う力を磨く姿勢につながる
  • 自分がメジャーなツールに詳しくなってアウトプットするという動機で
    業務で使うツールを選んでもよい(AWSのterraformの例)
  • 勉強会のメモもアウトプットに使える
    (アウトプットの質は気にしない。名刺や職歴だと思えばいい)
  • アウトプットを意識したら技術的な深掘りポイントがどんどん出てくる

 →アウトプットありきの姿勢はロックインを避けることにもつながる
 (ロックインとは社内でしか通用しない状態と理解しました。つまり私です)

 

これから

業務に絶望していましたが、そこから目を背けるのではなく、
利用できるものは全て利用し、アウトプットのネタを必死に探します。

業務時間の中でアウトプットする時間を確保するのが直近の目標になりました。

成長の余地がないドキュメント業務とかやってられるかああああああ!!!

 

いまはまだ入門者レベルですが、自分が作りたいものを実装できるようになるのが目標なので、
チャンスを掴むために、いろいろな人に声かけていくのも実践していきたいです。
(スキルを磨くためにいずれは副業もやりたい)

 

今回の勉強会関係者と出席者の皆さま、貴重なお話とそれを聞く機会をありがとうございました。