いっしきまさひこBLOG

AI・機械学習関連、Web制作関連、プログラミング関連、旅行記録などなど。一色政彦。

壊れた動画ファイル(moov atom not found)の修復例

録画した動画の保存に失敗して壊れた.mp4ファイルができたのですが、試行錯誤して何とか修復できたので、万が一もう一度起きたときのための備忘録です。Windows 10で修復しました。

他の皆さんでも同様の問題があれば参考になるかもしれません。ただし、同じ手順を実行した場合のいかなる結果も保証しませんのであくまで完全に自己責任で行ってください。

動画の保存に失敗した

わたしの場合、動画の保存中にアプリがフリーズして、中途半端な状態で終わりました。いろいろと調べた結果、コマンドラインツールのFFmpegというツールで壊れた内容を取得できることをつかみました。なお、そのことが分かる前に5個ぐらいいろいろな修復アプリを試しましたが、全部ダメでした...。

FFmpegのダウンロード

FFmpegは聞いたことあるような気がしますが、これを使ったことによる責任は一切おえませんのでご了承ください。Wikipedia「FFmpeg - Wikipedia」にも情報があるので、たぶん安全ではなかろうかと自分は判断しました。

ちなみにわたしの場合、上記のサイトのここからダウンロードしました:

f:id:misshiki:20201015203749p:plain
FFmpegのダウンロード

上記のリンクを開くとGitHubリポジトリ(=ソースコードが置いてある場所)に到達します。どれを選べばよいのかは私には分かりませんでしたが、次の画像に示すものをダウンロードしてみました。

f:id:misshiki:20201015203951p:plain
FFmpegコマンドラインツールを含む.zipファイル

ダウンロードした.zipを展開してbinフォルダー内のffmpeg.exeをコマンドプロンプトで呼び出して使いました。コマンドラインを使うので一般の人には比較的高度な作業になってしまうかもしれません。

FFmpegによる診断

入力したコマンドは、ffmpeg -i <ファイル名>.mp4です。入力前に、cd <フォルダーパス名>で現在のパスを移動しておく必要があります。

f:id:misshiki:20201015204728p:plain
FFmpegコマンドによる情報取得の結果

コマンドを実行した結果、次のように表示されました。

[mov,mp4,m4a,3gp,3g2,mj2 @ 0000017769bb44c0] moov atom not found
rokuga.mp4: Invalid data found when processing input

moov atom not foundというエラーが出た場合、untruncコマンドで修復できるという情報がGoogle検索で何件かヒットしました。同名のエラーであれば、わたしと同じように修復できる可能性があります。

ただしいずれの参考情報もLinuxなどを使っていてWindowsでは難しいなどと書かれていました(それもこの記事をわざわざ書いた理由です)。ちなみにuntruncのソースコードは次のリンク先にあります。

そこで「untrunc windows」で検索したところ、「MP4 Repair Untrunc-w GUI」(以下、untrunc-gui)というツールがヒットしました。

untrunc-guiのダウンロード

  • MP4 Repair 0.9.0 Free Download for Windows

  • CodecPack.Co | Download Audio Video Software」というサイトで開発&配布されています。えー、このサイトってウィルスとか大丈夫なのとは思いましたので、これを使うかどうかは繰り返しになりますが自己責任でお願いします。わたし自身は、Facebookなどの公式ファンページを運用されていたりするし、サイトの作りに歴史を感じるし、真面目なサイトみたいなので大丈夫だろうと判断しましたが、人にお勧めできるほどの自信はありませんので。念のため自分でウイルスチェックなどは行ってください(Window Defenderではチェックして問題なかったです。先ほどのffmepgも)。使い終わったら完全に削除しておくとより安心ですね。

[Untrunc GUI 64-bit]リンクから.zipファイルをダウンロード後、展開してuntrunc-gui.exeをダブルクリックするなどして画面を起動してください。untruncはコマンドラインツールですが、untrunc-guiはWindowアプリ(GUIツール)です。

untrunc-guiによる修復

untrunc-guiの使い方は説明が不要なくらい簡単です。

まず準備として壊れた動画ファイル(reference file)だけでなく、壊れたファイル(truncated file)を作成した録画ツールで適当に録画した正常な動画ファイルを用意します。これは壊れたものと正常を比較しながら修復するためです。

f:id:misshiki:20201015210624p:plain
untrunc-gui

untrunc-guiに2つのファイルパスを入力して[Repair]ボタンを押せば完了です。動画の長さによると思いますが、実行は数分で終わりました。

同一フォルダー内に「_fixed-」という名前の付いたファイルを再生してみてください。わたしの場合は無事に再生できました!(ただし恐らくハングアップしたところまでと思いますが途中で切れていましたが) 同じように試した皆さんがうまくいくことを祈ります。

Twitterハッシュタグとシャドウバン

ブログ記事などのタイトルにハッシュタグを含めると、開設間もない信頼性の低いTwitterアカウントで記事タイトルを含めてツイートした際に、そのアカウントがシャドウバンされてしまう可能性が高いかもしれません。ハッシュタグを含めた記事をツイートした直後にシャドウバンになったので(ひどい対応だなとは思うのですが…)。

なお「シャドウバン」の意味については検索してください。調査ツールもあります。

ツイートするため、してくれる人のため、記事タイトルにはハッシュタグを付けない方がよさそうです。自分もツイート時に楽をしようと記事にハッシュタグを付けてみることもありましたが、逆にこれが人に迷惑を掛ける可能性があるなと気付きました。

Pythonで書いた計算コードから数式の描画/TeX取得を行う方法(handcalcs)

機械学習関連をしていると、数式をコードで表現するときがありますが、逆にコードで書いたものを人に説明するためや、自分で後で見直したいとき用に、数式を描画したいときがあります。Jupyter Notebookを使っている場合は、通常、TeX/Latex書式で書くのではないかと思います。

1つぐらいであればTeXコマンド文を手書きした方が速いと思いますが、大量にある場合、「コードから数式を表示できないの?」って思う人も多いかもしれません。そんなことができるライブラリを見つけたので紹介します。

上記の「handcalcs」というPythonライブラリです。注意点としては、Python 3.7以上である必要があります。Colabだと2020/09/03時点でバージョン3.6なので使えなかったです。Kaggle Notebook(Python 3.7.6)を使って、以下の内容を試しました。

インストール方法

PyPIパッケージなのでpipでインストールできます。

!pip install handcalcs

# Collecting handcalcs
#   Downloading handcalcs-0.8.1-py3-none-any.whl (24 kB)
# Requirement already satisfied: pyparsing<3.0.0,>=2.4.7 in /opt/conda/lib/python3.7/site-packages (from handcalcs) (2.4.7)
# Installing collected packages: handcalcs
# Successfully installed handcalcs-0.8.1

handcalcsレンダラーのインポート

import handcalcs.render

Python計算コードのレンダリング

あとは%%renderセルマジックで記述するだけです。

%%render
a = 2
b = 3
c = 2*a + b/3

これをJupyter Notebook上で実行すると次のようにレンダリングされます。

f:id:misshiki:20200903161632p:plain
handcalcsレンダリング結果

MathJaxでレンダリングされているので、右クリックメニューからTeXコマンド文を取得できます。

数式だけでなく、その計算結果までレンダリングされているのもポイントです。

TeX初心者であればかなり参考になるのではないでしょうか。

レンダリング例2

f:id:misshiki:20200903162151p:plain
mathモジュールのsqrtやpiも利用可能

直接にTeXコマンド文を取得

%%texセルマジックを使えばレンダリングではなくTeXコマンド文が出力されます。

f:id:misshiki:20200903162241p:plain
TeXコマンド文を取得するモードもあります

この他にもいろいろと機能があるので、公式GitHubページをご確認ください。

回帰分析に関する統計学ノート

1つ/2つ以上の独立変数(説明変数)を用いて従属変数(目的変数)を表す直線(回帰式)を、最小二乗法によって求める手法を「単回帰/重回帰分析」と呼ぶ。独立変数と従属変数はどちらも量的変数である必要がある。ただし質的変数を「1、0」エンコーディングしてダミー変数にすることで、独立変数に使用することもできる。各独立変数に対する偏回帰係数は、それぞれT検定により有意確率を確かめる。回帰分析モデルを評価するための指標には、「標準化回帰係数(β)」「決定係数(R2)」「自由度調整済み決定係数(補正R2)」などがある。最後に回帰式全体の有意確率をF検定で確かめる。多重共線性に注意が必要。

f:id:misshiki:20200622141842p:plain
統計検定の適用方法一覧(単回帰分析/重回帰分析を使う場合を赤で示した)

「回帰分析」関連のノートは、このエントリにまとめていく予定(ロジスティック回帰は別エントリにする予定)。まだ途中です。

回帰分析(単回帰分析)

  • 最小二乗法を使って最も当てはまりがよい直線を求める
  • その直線の傾きが「回帰係数」、切片が「定数」と呼ばれる
  • 直線は一次式なので「線形回帰」とも呼ばれる。二次式以上にして曲線になるなら「非線形回帰」と呼ばれる
  • 回帰分析の場合、独立変数と従属変数はどちらも基本的に「量的変数」でなければならない

ダミー変数

  • 例外として、独立変数として「ダミー変数」を使ってもよい
  • ダミー変数とは、質的変数に数値を割り当てたもの、例えば「男性:0、女性:1」のような「カテゴリカル変数のエンコーディング(した値)」を指す
  • このようなダミー変数を使っても、統計学的に問題ないことが証明されている

重回帰分析

  • 独立変数が1つの場合が「単回帰分析」、2つ以上の場合が「重回帰分析」
  • 各独立変数は標準化した方がよい。標準化とは、平均0、分散1にスケーリングすること
  • 重回帰分析は、最小二乗法を使って最も当てはまりがよい平面や超平面を求める
  • 各次元の傾きが「偏回帰係数」(重み)、切片が「定数」(バイアス)と呼ばれる

「偏回帰係数のT検定」で有意確率を確認

  • 偏回帰係数の有意確率を確かめるには「T検定」を行う
  • 有意確率とは、偶然に起こってしまう確率のこと
  • 0.05未満なら、偶然に起こる確率は非常に低い(=つまりほぼ起こらない)ので、「統計的に有意」となる。「5%水準で有意」「有意水準5%未満で統計的に有意差がある」とも言う
  • 例えば、ある独立変数の有意確率が0.01なら、「その独立変数は効果がない(=0と差がない)」という帰無仮説が棄却されて「ある独立変数」と「0(固定値)」の間に差がある(=その独立変数には効果がある)と言える
  • このようなT検定は「1群のT検定」に分類できる(参考:「分散分析に関する統計学ノート」の最後にある補足)

標準化回帰係数(β)

  • 独立変数同士は、必ずしも単位が同じではないので、個々の偏回帰係数を比較しても意味が無い
  • そこで、各独立変数における偏回帰係数の効果を比較するための指標「標準化回帰係数(β)」

サンプルサイズ(N)

  • 標本データの数のこと

決定係数(R2)

  • 「全ての独立変数によって、従属変数の何%が説明できるか」を示すがのが「決定係数(R2、R二乗値)」
  • R2=0.345 なら、34.5%説明できるということ

自由度調整済み決定係数(補正R2)

  • 決定係数は独立変数が多くなるほど1に近づくので、その自由度を調整して再計算したのが「自由度調整済み決定係数(補正R2)」
  • 独立変数の数による影響を除外できるので、より適切に回帰分析モデルを評価できる

「回帰式のF検定」で有意確率を確認

  • 回帰式の有意確率を確かめるには「F検定」を行う
  • 決定係数が「全独立変数における偏回帰係数の効果」を示す指標なら、回帰のF検定は「全独立変数の役立たなさ、意味のなさ」を示す指標
  • 例えば5%水準でF検定の有意確率が0.01なら、「各独立変数が0に等しい(=差がない)」という帰無仮説が棄却されて「各独立変数」は等しくない(=有意差がある)、つまり回帰式には「意味がある」と言える

注意事項:多重共線性

  • 独立変数同士の相関が高すぎると、偏回帰係数を正しく算出できなくなってしまう現象「多重共線性」(=マルチコ:multi-colinearity)
  • 多重共線性を回避するためには、その減少を引き起こしている独立変数を除外(もしくは他の独立変数と合成)する必要がある
  • このために、各独立変数に対して「分散増幅因子(VIF)」という指標を算出して、そのVIF値が大きいものを除外すればよい
  • VIF値が、いくつ以上だったら除外するかは諸説あるが、だいたい5以上(最低でも10以上)の独立変数を除外すればよい。2未満なら安心できる。0.1未満で全く問題なし

疑問:質的変数を独立変数にするには?

  • 質的変数を「1、0」データ(対象だけ1、それ以外を0で表現する数値列)に変換してダミー変数を作ればよい(「k-1個」のone-hotエンコーディング)
  • 例えばお菓子の3種類でポテチ/アイス/チョコがあるなら、「ポテチ=1、それ以外=0」「アイス=1、それ以外=0」「チョコ=1、それ以外=0」のうち2つを作成すればよい
  • つまり「1、0」ならポテチ、「0、1」ならアイス、「0、0」ならチョコという具合に、2つの独立変数ができるということ
  • ちなみにニューラルネットワークのone-hotエンコーディングは、通常、3種類を3つのダミー変数に変換する
  • 一方、回帰分析のone-hotエンコーディングでは、このようにk個(この例では3個)から1個を引いた「k-1個」(この例では2個)のダミー変数を作成するので注意
  • すべての独立変数が質的変数である場合に、それら全てを「1、0」のダミー変数にして重回帰分析する手法は「数量化Ⅰ類」と呼ばれる
  • ちなみに、すべての独立変数が質的変数である場合の判別分析は「数量化Ⅱ類」、質的データに対する主成分分析は「数量化Ⅲ類」と呼ばれる

参考文献

分散分析に関する統計学ノート

3群以上の群間で平均値の差があるかどうかを検定したい場合には、「分散分析のF検定」(+テューキーの多重比較)を行う。ただし、この検定は「ルビーンの等分散性検定」で群間の分散が等しい場合のみ。等しくない場合は、「ウェルチののT検定」(+ゲームス・ハウエルの多重比較)を行う。2群の場合は「平均値の差のT検定」を行う。最近では等分散かどうかで分岐せず、最初から「ウェルチののT検定」を行うのが主流。ちなみに1群の場合は「1群のT検定」を使えばよい。

f:id:misshiki:20200620151108p:plain
統計検定の適用方法一覧(分散分析/T検定を使う場合を赤で示した)

「分散分析」関連のノートは、このエントリにまとめていく予定。

分散分析(ANOVA:ANalysis Of VAriance)とは

  • 対象:グループが3つ以上。2つの場合は最後に書いた『補足:「平均値の差のT検定」について』を参照
  • 分散分析とは、グループごとに、ある変数の平均値を算出し、それらに差があるかを確かめる手法
  • 例えば、ある地区の学校ごとに、ある英語試験の平均点を算出し、それらに差があるかを確かめるなど

分散分析の結果の見方

  • 結果の見方としては、まず平均値を見る。次に有意確率を見る
  • この有意確率は「分散分析のF検定」の結果(F値)
  • F値=有意確率を算出するときの途中の計算の値

分散分析の「F検定」と有意確率

  • 有意確率とは、偶然に起こってしまう確率のこと
  • 0.05未満なら、偶然に起こる確率は非常に低い(=つまりほぼ起こらない)ので、「統計的に有意」となる。「5%水準で有意」「有意水準5%未満で統計的に有意差がある」とも言う
  • 例えば有意確率が0.01なら、「平均値は等しい(=差がない)」という帰無仮説が棄却されて「各学校」と「英語の平均点」の間に関連がある(=郡間で平均点に差がある)と言える
  • つまり、英語の平均点は学校ごとに差があると、ざっくり示しているに過ぎない
  • 要するに、どの学校とどの学校に差があるかまでは分からない。ので、テューキーの多重比較を見る

テューキー(Tukey)の多重比較

  • 各グループごとに平均値に差があるか比較して有意確率を算出する
  • 分散分析のF検定が全体の有意確率で、テューキーの多重比較が部分の有意確率

ルビーン(Levene)の等分散性検定

  • 対象:グループが3つ以上
  • ただし分散分析のF検定やテューキーの多重比較は、各グループ内の分散が等しいときにしか使えないという制約がある
  • 分散が等しいかを調べるのが、ルビーンの等分散性検定
  • つまり分散分析の前に、ルビーンの等分散性検定を行っておく必要があるということ
  • その有意確率が0.05未満(統計的に有意)なら、「分散が等しい」という帰無仮説が棄却されて「各グループで分散に差がある」ことを意味するので、分散分析できない

ウェルチ(Welch)のT検定

  • 等分散でもそうでなくても実施可能
  • 各グループで分散に差がある場合は、(分散分析のF検定の代わりに)ウェルチのT検定を行う
  • 結果の見方は同じ

ゲームス・ハウエル(Games-Howell)の多重比較

  • また、(テューキーの多重比較の代わりに)ゲームス・ハウエルの多重比較を行う
  • 結果の見方は同じ

多重性の問題

  • 以上の手法は昔の教科に載っていた手法。現在では「多重性の問題」があると言われている
  • 多重性とは、「等分散性検定」→「分散分析のF検定など」による二段階検定によって、有意確率が設定した5%未満ではなく実質的に例えば9.7%ぐらいと緩くなってしまっていること
  • これは問題があるので、現在では等分散性があろうがなかろうが、全部すっ飛ばして「ウェルチのT検定」を行うべし、というのがセオリーになっている(らしい)
  • 参考にできる「YouTube動画:...【検定の多重性問題をうまく回避する方法】

補足:「平均値の差のT検定」について

  • 対象:グループが2つ
  • 平均値の差のT検定とは、2つのグループ間に、ある変数の平均値を算出し、それらに差があるかを確かめる手法
  • 例えば、2つの学校間に、ある英語試験の平均点を算出し、それらに差があるかを確かめるなど
  • T値とF値は、実質的に同じものを表現しており、具体的には「T値の2乗=F値」になる
  • 「平均値の差のT検定」は、2つのグループ内の分散が等しい(=等分散の)とき/等しくないとき、どちらのケースでも使ってよいとされている
  • 非等分散性を気にするのであれば、ウェルチのT検定を使えばよい(「ウェルチの検定」は万能?! これだけ使うのが主流らしい)

補足:「T検定」について

  • ちなみに、ひとえに「T検定」といっても、使われ方によって3つに大別できる
  • 2群: 平均値の差のT検定(「対応のないT検定」、「スチューデントのT検定」、単に「T検定」とも呼ばれる)
  • 1群: 1群のT検定
  • 1群を2回使用: 対応のあるT検定
  • 「1群のT検定」と「対応のあるT検定」は以下で説明
  • なお、 3群以上なら上記の通り「分散分析のF検定(※T検定ではないが、下記のように同じ表現値)」を使う

補足:「1群のT検定」について

  • 対象:グループが1つ(何も考えなくても等分散)
  • 1群のT検定とは、1つのグループ内で、ある変数の平均値を算出し、それと指定された固定値とに差があるかを確かめる手法
  • 例えば、1つのポテトチップス群において、内容量の平均の重さを算出し、それとパッケージにに記載された80グラム(固定値)とに差があるかを確かめるなど

補足:「対応のあるT検定」について

  • 対象:グループは1つ、その1つを2回使う(主にビフォー&アフターで)(何も考えなくても等分散)
  • 対応のあるT検定(paired t-test)とは、1つのグループ内で、ある変数の平均値を2回算出し、1回目と2回目に差があるかを確かめる手法
  • 例えば、1つのポテトチップス群において、リニューアル前と後に分けて内容量の平均の重さを算出し、その前(ビフォー)と後(アフター)に差があるかを確かめるなど

補足:正規性がない場合について

  • 正規性とは、データの母集団が正規分布に従っていること
  • 通常は正規分布に従っているものと仮定して、上記のようなフローで検定を行う
  • 正規性を調べるには、「正規性の検定」を行う
  • 正規性の検定には、シャピロ・ウィルク(Shapiro-wilk)検定、コルモゴロフ・スミルノフ(Kolmogorov-Smirnov)検定などあるが、決定打にはならない。ヒストグラムやQ-Qプロットを見て判断したりもする
  • 正規性がない場合は、非正規分布についてはT検定よりも有効性が高い「マン・ホイットニー(Mann–Whitney)のU検定」(=ウィルコクソン:Wilcoxonの順位和検定)を行う

参考文献

de:code 2020 聴講ノート(AI・機械学習関連のみ)

2020年6月17日~30日に開催されちえる「de:code 2020 | 開発者をはじめとする IT に携わるすべてのエンジニアのためのイベント」(AI・機械学習関連のみ)を聴講時に取った個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

6月19日現在では、すべてのセッションが公開されているわけではないので一部だけです。→1カ月後の7月17日現在で、de:code 2020は終了しました。全部は見きれなかった。「Microsoft AI が目指す「全ての人のための AI」」「”AI パーツ” であなたは何つくる? Azure Cognitive Services アップデート」というセッションも見て良かったけど、ノートは省いてしまった。履歴を見ると14セッションも視聴していました。

AutoML ではじめる機械学習の民主化

自動機械学習とは?

  • 機械学習の民主化=誰でも使えるようにしたい
  • 機械学習のプロセス: 特徴量エンジニアリング、アルゴリズム選択、パラメーター選択
  • Azure Machine Learningでは自動機械学習(Automated Machine Learning:AutoML)を提供

f:id:misshiki:20200717162802p:plain
自動機械学習が目指すところ

f:id:misshiki:20200717162814p:plain
Azure Machine Learning

  • 問題種別: 分類、回帰、時系列の予測をサポート
  • 開発・運用: Python、R、Azure Machine Learning Studio、Jupyter Notebook、Visual Studio Code、PyCharmをサポート
  • ライブラリ: PyTorch、TensorFlow、scikit-learnなど

機能詳細と最新情報

  • データに関する機能:
    • 大規模データ(100GBまで)への対応
    • Azure Open Datasets
    • Data Guardrails
  • 特徴量エンジニアリングに関する機能:
    • BERTによる特徴量抽出
    • 特徴量変換のカスタム指定
    • 自動での特徴量変換
    • 時系列データ前処理の自動化: ラグ、ローリングウィンドウなど
  • アルゴリズム選択に関する機能:
    • Microsoft LightGBM
    • 時系列予測: ARIMA、Prophet、Forecast TCN
  • パラメーター選択に関する機能
    • 強調フィルタリング+ベイズ最適化: 「特徴量エンジニアリング」と「アルゴリズム選択」を含む全体のプロセス
  • 機械学習プロセスの追跡(リネージ)
  • モデル解釈: 責任ある機械学習(Understand、Protect、Control)を実現
    • InterpretML: モデル解釈(モデル全体のグローバル解釈、予測値ごとのローカル解釈)に対応し、直感的なダッシュボードを提供予定

f:id:misshiki:20200717162828p:plain
新しいダッシュボード

  • Azure Machine Learningのロードマップ

f:id:misshiki:20200717162846p:plain
2020年5月末時点でのロードマップ

デモンストレーション

  • Azure Machine Learningの操作例

f:id:misshiki:20200717162857p:plain
Azure Machine Learningの画面

f:id:misshiki:20200717162908p:plain
自動MLを作成しているところ

f:id:misshiki:20200717162928p:plain
分類、回帰、時系列の予測から選択

f:id:misshiki:20200717162955p:plain
選択された最適なモデルの精度を確認

f:id:misshiki:20200717163008p:plain
データの整合性などを確認できるデータガードレール

f:id:misshiki:20200717163019p:plain
実行されたモデルの一覧

f:id:misshiki:20200717163032p:plain
モデル解釈として影響度の高い特徴量も分かる

f:id:misshiki:20200717163044p:plain
デプロイ機能もある

  • Python SDKの実行例

f:id:misshiki:20200717163111p:plain
AutoMLConfigクラスの実装コード例

参考情報

AI・機械学習で新たに創出されるデータとアノテーションビジネス

AIとデータを取り巻く課題

  • 時代背景:不透明さが増すAI
  • 倫理と責任あるAIが求められる(公平性や透明性など)

AI倫理審査ボード

  • マイクロソフトは「AI倫理審査ボード」を設置

f:id:misshiki:20200619132403p:plain
AI倫理審査ボード

  • 「Ethical AI Dicision Framework」を定めて推進

f:id:misshiki:20200619132423p:plain
Ethical AI Dicision Framework

AIベンダーやAIエンジニアが注意するべき法的事項

  • 「アノテーション」「クレンジング」作業に焦点を当て、どのような権利が発生するかを示す
  • 著作権は発生するのか? 一般的に「アノテーション」「クレンジング」は著作物の創作ではない
  • 著作権法10条1項9号「プログラムの著作物」: アイデアは著作物ではない。アイデアは特許法で保護
  • 著作権法30条の4「著作物に表現された思想又は感情の享受を目的としない利用」: 「アノテーション」「クレンジング」が著作物だったとしても、この条文によりAIの学習に無断で利用できることになっている
  • 不正競争防止法2条7項「限定提供データとしての保護」: 「アノテーション」「クレンジング」データはこれにより保護できると考えられる。よって「限定提供データ」として保管するのが大事
  • これ以外で保護する方法: 「契約による保護」。そのために、信用できる特定プラットフォーム上でデータを流注させるのが重要
  • AIデータ活用コンソーシアムでこのための契約書(テンプレート?)を準備中

ソフトウェアと製造物責任(PL法)

  • 問題があった場合に、製造物であるソフトウェアの責任を負わなければならない
  • 通常は、原因調査により問題のあったプロセス箇所を明らかにし、そのプロセスのエンティティが責任を負う
  • AIの場合は、ブラックボックスであり上記のような責任所在の特定は難しい。よってデータやアノテーションにおいても製造物責任を考慮しておく必要がある
  • 例えばアノテーションを担当した人が悪意を持ってラベリングする可能性などがある。そんため作業者の身元確認と保証も大事になってくる
  • データには偏りが生まれる可能性がある。例えば人種の偏りがあるデータで学習してしまった場合、人種差別を持つAIとなる。また、データは時間とともに変化し、世代により意味が変化したりする。データの偏りは無くす必要がある
  • AIの用途によって、データに求められる保証レベルも変わってくる
  • 「AI利活用ガイドライン」に10の原則も参考にしてほしい

リテール AI の PoC 事例から学ぶスケールアウトへのヒント

リテールAI研究会とは

  • 一般社団法人リテールAI研究会
  • リテールAI研究会の中で、PoCを推進するための「分科会」活動を推進
  • リテールAIでよくある失敗: 「フルカスタマイズしようとしてPoCが終わらない」「ビジネス側とエンジニア側で意見の食い違い」

PoC事例の振り返り

  • 何個か事例の説明があったけど割愛

リテールAI検定

リテールAIを成功させる秘訣

  1. 「推論した後に何をするか」をあらかじめ議論すべし
  2. そのためには、最初の段階から、ビジネス部門ユーザーを取り込むべし
  3. ビジネス部門の初心者でも簡単にできるようなシナリオを用意すべし
  4. 部門ごとの要求を取り過ぎてしまわないようにすべし(カスタマイズしすぎるとスケールアウトしないので)

アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用

Azure Machine Learning + MLOps

ざっくりとスライドの引用で紹介します。

f:id:misshiki:20200619161642p:plain
MLOpsのイメージ

f:id:misshiki:20200619161701p:plain
なぜAzure ML+MLOpsなのか

  • MLOps構築をアバナードに業務委託した

アバナードによるMLOps構築

  • 要件と3カ月の成果について説明がありました

アーキテクチャの全体構成は図がないと分からないので、スライドを引用します。

f:id:misshiki:20200619161729p:plain
アーキテクチャの全体構成

f:id:misshiki:20200619161750p:plain
機械学習実行アーキテクチャ

MLOps導入の効果

  1. 工数削減と品質確保
  2. 実験トレーサビリティの確保
  3. 属人化/属環境化の防止

MLOps運用での検討事項

  1. Azureランニングコストの最適化
  2. MLOpsを十分に理解した技術者が必要

Azure Cognitive Search で作る! 一歩先を行く検索機能 〜 富士フイルム IMAGE WORKS 事例 〜

AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ

アジェンダ

  • 混合精度演算(Mixed Precision Training)
    • Tensorコア
    • AMP
  • NVIDIA A100 TensorコアGPU
    • TF32による演算
    • 構造化疎性(Structural Sparsity)
    • Multi Instance GPU(MIG)
  • GPUの利用環境
    • AzureのGPUインスタンス

混合精度演算(Mixed Precision Training)

f:id:misshiki:20200619173843p:plain
FP32とFP16の違い

  • FP16を使う利点:最近のGPUではFP16の演算スループットがFP32の2倍~8倍高い
  • そこでTensorコア。これを使いこなすのが鍵

f:id:misshiki:20200619173859p:plain
Tensorコア

  • 混合精度演算でトレーニングを高速化するには、いくつかの対策が必要。それを自動的に行うのが「AMP:自動混合精度演算」
  • AMPは、計算グラフを解析して適切にキャストしたり、勾配のアンダーフロー(小さくなると表現できずに0になる問題)を防ぐためのロススケーリングしたりできる
  • AMPは現在TensorFlow/PyTorch/MXNetに対応しており、わずか数行を追加するだけで有効化できる

NVIDIA A100 TensorコアGPU

  • 新型GPUが登場。性能は大幅に向上した

f:id:misshiki:20200619173918p:plain
NVIDIA A100 Tensorコア GPU

  • 「TF32 Tensorコア」というF32のレンジとFP16の精度を合わせ持つ新しい数値データ型を導入

f:id:misshiki:20200619173935p:plain
TF32 Tensorコア

  • ここまではトレーニングの高速化。ここからは推論の高速化
  • 構造的疎性(Sparsity)により推論を高速化する

f:id:misshiki:20200619173951p:plain
推論の高速化

  • FP64(倍精度演算)にも対応
  • さらに「Multi Instance GPU(MIG)」という新機能により、GPUインスタンを分割して使用率を最適化できる。推論時のスループットも向上する

GPUの利用環境

  • NVIDIAのGPUは次のような歴史がある

f:id:misshiki:20200619174014p:plain
NVIDIA GPUの歴史

  • AuzreでGPUを使うときは「NVIDIA NGC Image for Deep Learning and HPC」を使うとすべて準備が整っていて便利

f:id:misshiki:20200619174033p:plain
NVIDIAが提供するVM

さくっとプチ成功する機械学習プロジェクトのコツ

4つのコツ

  • 最初から完璧なゴールを目指さない、周囲の理解を得ながら段階的に進める

f:id:misshiki:20200717153926p:plain
機械学習プロジェクトの成功とは?

  • 各スキルをバランスよく補うプロジェクトチームを作る。特にビジネス理解者必須

f:id:misshiki:20200717153945p:plain
理想的なプロジェクトチーム体制

  • Azure PaaSを活用して、速攻&低コストで環境構築し、作業効率化

f:id:misshiki:20200717153958p:plain
機械学習プロジェクトに必要な環境

  • 機械学習モデルは誤差解析から思わぬインサイトを得られる可能性がある、可視化は大切

f:id:misshiki:20200717154013p:plain
Power BIによる可視化イメージ

gacco(統計学/サイエンス/AI・機械学習)の修了証

gaccoの修了証を表示する場所もないので、このエントリに貼り付けていくことにしました。

文部科学省enPiT-Proの「スマートエスイー」シリーズ

『ga136:推論・知識処理・自然言語処理』(August 25, 2020)

f:id:misshiki:20200826160214p:plain
『ga136:推論・知識処理・自然言語処理』の修了証(2020)

『ga137:機械学習』(September 17, 2020)

f:id:misshiki:20201004230059p:plain
『ga137:機械学習』の修了証

日本統計学会の「統計学」シリーズ

『ga014:統計学Ⅰ:データ分析の基礎』(June 18, 2020)

f:id:misshiki:20200619100246p:plain
『ga014:統計学Ⅰ:データ分析の基礎』の修了証

『ga082:統計学Ⅲ: 多変量データ解析法』(March 11, 2020)

f:id:misshiki:20200619100218p:plain
『ga082:統計学Ⅲ: 多変量データ解析法』の修了証

総務省統計局の「データサイエンス」シリーズ

『ga031:社会人のためのデータサイエンス入門』(1周回目:December 02, 2019、2周回目:July 07, 2020)

f:id:misshiki:20200727221427p:plain
『ga031:社会人のためのデータサイエンス入門』の修了証(2020)
f:id:misshiki:20200619100158p:plain
『ga031:社会人のためのデータサイエンス入門』の修了証(2019)

滋賀大学データサイエンス学部

『ga109:大学生のためのデータサイエンス(Ⅰ)』(September 7, 2020)

f:id:misshiki:20201004230319p:plain
『ga109:大学生のためのデータサイエンス(Ⅰ)』の修了証

『pt010:高校生のためのデータサイエンス入門』(September 17, 2020)

f:id:misshiki:20201004230230p:plain
『pt010:高校生のためのデータサイエンス入門』の修了証

「Grow with Google」シリーズ

『pt028:はじめてのAI』(November 11, 2019)

f:id:misshiki:20200619100138p:plain
『pt028:はじめてのAI』の修了証