見出し画像

ジェイラボワークショップ第60回『人工知能史から考える『頭がいい』とはどういうことか?』【情報科学部】[20230710-0723]


DAY1

けろたん — 2023/07/10 03:06

皆さんこんばんは。本日から情報科学部のワークショップです。
テーマは「人工知能史から考える『頭がいい』とはどういうことか?」です。
部員の皆さんに人工知能技術についての調査と意見を発表してもらい、2週間目の終わりに、けろたんが「頭がいい」ということについて考えたデンパな文章を投稿する予定です。

以下が各部員の担当です。
ジパングさん、匿名希望さん:
「かつて人工知能と呼ばれていたもの」についての調査とコメント。
一般に普及した結果なのか、本質的に機械的な処理だと判明したからなのか、理由はともかく昔は「人工知能」と言われていたのに現在は知的に高度な処理だと思われなくなっている技術があります。字数が限られたキーボードで数多の漢字を入力する必要がある日本語話者にとっては、日本語の読みを適切な漢字に変換するかな変換 (IME) がその代表例です。ジパングさんと匿名希望さんの着眼点に期待。

2週目は、シフォンケーキさんとTsuboさんに近年の人工知能の基礎技術とその応用例を紹介していただきます。基礎技術をchiffon_cakeさんに、Tsuboさんには、応用例である生成系AIの中でも昨年夏に話題になった絵を書くAIの使い方実例を交えて、注文する文言を工夫して目当ての出力を得るプロンプトエンジニアリングの技法について紹介して頂きます。
最後に、迂遠なテーマになりますが、けろたんが頭がいいとはどういうことか?」について考えたことを述べます。
それでは2週間よろしくどーぞ。
まずは明日のジパングさんの発表です。

DAY2

ジパング — 2023/07/12 23:59

こんにちは、ジパングです。本日から人工知能の歴史と、かつて人工知能と呼ばれていたものについて触れて行きたいと思います。初日は、人工知能の歴史についてお話しします。

人工知能の歴史は大まかに1950年代の第一次AIブーム、1980年代の第二次AIブーム、そして第三次AIブームに分かれます。

第一次AIブームではコンピューターを使った総当り計算で、迷路の探索や簡単な数学の定理の証明などが行われました。この頃に後のAIブームの元となるニューラルネットワークや機械学習のアルゴリズムが提唱されました。ただ現実社会の問題を取り扱う上で複雑に絡み合った要因を扱うことは当時の技術ではできないことがわかり、この第一AIブームは幕を閉じました。

第二次AIブームではコンピューターに様々な知識(コンピューターが推論するために必要な様々な情報を、コンピューターが認識できる形で記述したもの)を与えることができるようになり、エキスパートシステムと呼ばれる機械が専門家のような振る舞いをすることが期待されました。このとき第一次のブームでは解くことができなかった問題(排他的論理和)に対処できることがわかり、研究が盛んに行われるようになりました。このとき誤差逆伝播法や強化学習、学習アルゴリズム(Q-learning)などが提案されました。このブームも知識をすべて記述してコンピューターに与えることは困難であることや、ハードウェアの限界により終わりを迎えました。

2000年代に入りハードウェアが発展したことで再び、AIブームが訪れました。進化したハードウェアを用いてニューラルネットワークでビッグデータから知識を自動的に学ぶという深層学習が提唱され、第三次 AI ブームが開始したと言われています。現在までつづく第三次AIブームでは画像認識で使われている畳み込みニューラルネットワーク(CNN)がよく知られ渡り、深層学習の代名詞ともなりました。また、近年では、強化学習に深層学習が取り入れられ、ロボット制御や車の自動運転などに応用されています。

以上がざっくりとした現代までのAI技術の発展と歴史になります。

個人的な所感としては、特にAI技術の発展では理論が提唱されてもハードウェアが追いついていないことで技術の発展に限界が来る点が、数学などで予想が提示されて後の人類がそれを解決する構図と似ていると感じました。

次は第二次AIブームで開発された音声認識技術について触れたいと思います。

p.s. ワークショップの投稿が送れてしまいすみません。ジパング担当日は11-12日となっており、12日に投稿される分は13日の午前に投稿いたいします。

参考文献


匿名希望 — 2023/07/14 13:11

ハードウェア側の限界は常にあったと思います。
私の身近な分野では、物体周りの空気の流れを解析・シュミレーションするのに、ナビエ・ストークス方程式等を用いて行おうとしても、ハードウェア側の性能の限界で解析できない、だから実験で解明していくというのが流体力学の分野ではあったようです。具体的な話をすると、風洞に蛍光塗料を入れた油を空気と一緒に流し、流れを測定したい物体に対して光を照射し、照射した光によって空気の流れがわかるから、それを写真に収める、といった感じですね。
ただ、ハードウェア側の進化でAI技術の発展が進んだと言っても、スパコン等のハードウェアを開発する側としては、現在の方式では技術的に限界が近づいており、性能を日々進化させて毎年成長直線に乗せるようにするのが正直もうしんどいそうです。
なので量子コンピューターなどの新たな可能性を探っているそうですね

DAY3

chiffon cake — 2023/07/16 13:53

皆様、
この度は不手際により、皆様にご心配をおかけいたしましたこと、副部長として心よりお詫び申し上げます。

本来の日にちを担当する方と連絡が取れないため、そちらを飛ばして匿名希望さんに投稿してもらおうと思います。
引き続きよろしくお願いします。
[13:54]
@匿名希望 投稿をお願いします。

匿名希望 — 2023/07/16 14:16

皆様、
この度は不手際により、皆様にご心配をおかけいたしましたこと、私からも重ねてお詫び申し上げます。

こんにちは、匿名です。私のパートでは、かつて人工知能と呼ばれていたが、今は呼ばれていないものの中でも、鉄道の技術に関するものを取り上げたいと思います。まずその技術の現在に至るまでの歴史を、そして後半では、現在その技術がどのように用いられているかをお話したいと思います。

鉄道の技術の中で、かつて人工知能と呼ばれていたが、今はそうでないもの、何だと思いますか???
それはずばり、定速走行機能です。
定速走行機能とは、列車が登り坂や下り坂を走行していても、ボタン操作やハンドル操作等の簡単な操作で列車の速度を一定にキープできる機能です。
この機能を導入することで、運転士のボタン操作1つで列車の速度が一定に保たれ、運転中における速度の微調整の手間が省け、運転士はより前方に集中することができ、更には、列車の所要時間短縮にも繋がるという優れた機能です。
現在では、JRをはじめとする、多くの鉄道会社で導入されており、マスコン(自動車で言うところのアクセルです)を力行(加速)側に倒した状態でボタンを押すことでスイッチが入るものや、マスコンを5段階中2段目にしておくことで下り坂に入っても速度が保たれるものなど、さまざまなタイプのものがあります。そして現在では在来線だけでなく、新幹線にも搭載されており、列車の遅延回復や安全性向上に非常に役に立っている技術なのです。

実はこのような技術を他社に先駆けて導入した鉄道会社があります。そうです。阪急電鉄です。

阪急電鉄は1964年にこの技術を搭載した車両を導入しました。この列車は阪急2000系と呼ばれる車両で、当時最新鋭の技術が搭載され、この技術が実現されました。この列車はこのような素晴らしい機能を持つことから、当時、「人工頭脳列車」と呼ばれ、その年に製造された車両の中で最も優秀な車両に与えられる賞である、ローレル賞を初めて受賞した車両です。
具体的には、時速45kmから105kmまでを5段階に分け、必要な速度の目盛りにハンドルを入れることで、その速度まで加速または減速し、その後は一定に保つという、他社には例を見ない最先端の機能でした。というのも、同年代の国鉄車両や他の私鉄に同様の機能が導入された例は無かったからです。
仕組みは、トランジスター増幅器等を用いることで、フィードバック制御を行い、速度を一定に保つというものです。車輪の回転により、車輪の回転加速度をパルス波で算出し、その値を積分して速度を算出するという、大学の古典制御で学ぶフィードバック制御と思っていただいて構いません。
フィードバック制御、この言葉、後半において重要なキーワードになるのでよく覚えておいてください。

当時の車両の加減速の制御方式は、抵抗制御といい、抵抗を用いて、モーターに流れる電流や電圧を調整し、加速を徐々に上げていく、あるいは、減速の際は、モーターが発電機となり、車輪の回転を抑制し、発電された電気を抵抗器で熱として排出するというものでした。(電車に乗る際、電車とホームの隙間から熱気を感じることはありませんか。あれです。電車が抵抗器から熱を放出しながら減速をしたため、その熱気を感じているのです。)この制御方式だと、定速走行機能の搭載は難しく、同様の制御方式が主流の国鉄車両では一切搭載がなされませんでした。
しかし、1980年代にVVVFインバータ制御という、電流の周波数を自由自在に調整することでモータにー流れる電流を自在にコントロールするという制御方式が誕生し、定速走行制御は非常に容易なものになりました。(この制御方式は、現在の鉄道車両のほとんどで採用されているもので、京急の歌うように発車していく電車などが有名ですね。)また、この頃には、半導体の技術も非常に進んでおり、このような背景もあってか、定速走行制御は瞬く間に導入されるようになりました。(国鉄時代からの列車の検修係の方々は、昔の車両は機械が主流だったが、今の車両は半導体の塊のように感じると言われることが多く、様々な背景技術の進歩がこのような技術の進歩に繋がったのだと考えられます。)

では前半はここまでとします。後半では、付加機能のような位置づけだった定速走行機能が、現在どのように進化しているのかに焦点をおいて語りたいと思います。

DAY4

匿名希望 — 2023/07/16 22:44

さてさてさてさて....
では匿名パートの後半に入りたいと思います。
前半では、鉄道の技術において昔は人工知能と言われていたが、現在ではそうでないものについて紹介しました。それは定速走行制御です。そして、定速走行制御の原理を簡単に紹介し、時代の流れにおいてどのように広がっていったのかについてもお話させて頂きました。

後半では、付加機能のような位置づけだった定速走行機能が、現在どのように進化しているのかに焦点をおいて語りたいと思います。

現在新製されている車両の殆どは、VVVFインバーター制御という、エネルギー消費が少なく、応答性に優れた制御方式が用いられています。心地の良いメロディを奏でながら、加速・減速していく車両がこれに当たります。VVVFインバータ制御は半導体を用いて、モーターに流れる電流の電圧と周波数を変化させてモーターの回転数を調整し、車輪の回転数を調整し、列車の速度を制御するという方式です。

VVVFインバータ制御の日本語名称は可変電圧可変周波数制御(Variable Voltage Variable Frequency)と呼ばれ、このことからもどのような制御方式なのか、ざっと想像がつくと思います。先程も述べた通り、この制御方式では、制御のために半導体を用います。その半導体の制御を行い、定速走行制御を行うのです。
ということは、従来のトランジスタ増幅器や磁気増幅器を用いた場合だと、アナログ出力値をもとに制御を行っていたのが、デジタル出力値で制御を行えるようになります。(デジタル入出力もミクロな単位で見ればアナログ入出力の制御を行っていますが、今回は話の都合上割愛します)ということは、アナログ制御のみに比べると、正確に制御が行なえ、なおかつ、制御指示を出してから目標値に達する時間も短くなります。要するに、素早くフィードバック制御が行えるようになってきたのです。そのようになってくると、この定速走行制御というのは、さらにきめ細かな制御にも応用できるようになります。このような経緯で、定速走行制御は、現在のような発展を遂げたのです。では、それは具体的に何なのでしょうか。
それは、位置情報を伴ったフィードフォーワード制御です。

具体的にどういうことか、述べていきましょう。
現在の東海道新幹線では、自然災害等による遅延回復のために、すべての編成において、定速走行制御装置が搭載されています。この制御装置は、上述のような理由による遅延の際、運転士が運転席にあるボタンを押して列車を常時一定の速度で走らせて、のこぎり運転によるタイムロスを減らして遅延回復を行うというものです。以下の図は、列車の走行曲線の模式図であり、従来の手動運転による走行を(黒線)、定速走行装置による走行を(赤線)で示しています。 (編集済)

[22:44]

[22:47]
この図の赤線と黒線が挟んだ面積分のロスを減らし、走行時分を短縮しようというものです。ただ、これだけだと、従来からある定速走行制御と何ら変わりありません。
ここからがすごいところなんです。
前回私、フィードバック制御が重要なキーワードになると言いましたよね?上の図のような運転制御自体は、フィードバック制御でもできちゃうんです。けど、制御における応答性と正確性が上がってもっと応用できるようになったっていいましたよね?そうなんです、応答性と正確性が上がった分、これから起こる変化を前もってインプットしておくなり予想して制御を行うことで、
・変化が起きる→(タイムラグ)→補正する、
ではなく、
・これから変化が起こることを前もって察知する→変化が起き始めたタイミングぴったり同時に補正する→補正結果をフィードバック→補正する→これから変化が起こることを前もって察知する→…
といったことが出来るようになったのです!!!
この制御方式を、フィードバック制御(FeedBack Loop)に対して、フィードフォーワード制御(FeedForward Loop)と言います。つまり、補正値からのズレを指摘されて修正していたものですらかつて人工知能と呼ばれていたのに、予めこのあと補正が必要なことを察知して、ズレ始めたのとほぼ同じタイミングで制御するという進化を遂げ、現在に至るのです!!!!
これ、すごいことじゃありませんか???
これがかつて鉄道業界で人工頭脳と呼ばれていた技術の現在の姿です。

ここまで現在における定速走行制御に関して抽象的な内容ばかり述べてきてませんでしたので、実際の定速走行機能について、もっと具体的に述べていきますね!

みなさん、走行中の惰性で走っている列車の速度が変わるタイミングって、どこだと思いますか?

登り坂に入った時、或いは下り坂に入った時なんかがよくある例ですね。あとはカーブを走行中も速度が落ちます。理由は、レールが曲がっていることで、車輪がレールから進行方向に対して反対方向の抵抗成分を受けるからです。(余談ですが、そんな事もあって、運転士はカーブしている駅とかなんかだと、通常よりもブレーキが効いて所定の停止位置よりも手前に止まってしまう可能性もあるため、状況に応じながらもブレーキを調整しています。)あとは、そうですね、新幹線なんかだと、時速270kmとかで走っているため、先頭部、車両と車両のつなぎ目による凹凸、足回りの凹凸などにより、ものすごい空気抵抗を受けます。(かといって、新幹線のお顔が受ける空気抵抗は全体の1割程度に過ぎませんが...)なので、平坦部を走行していても惰性走行していると、常にみるみる速度が落ちます。

空気抵抗によって速度が落ちていく点はまず置いといて、登り坂や下り坂で速度をより正確に一定に保つことができるのです。それは、位置情報(どこに登り坂や下り坂があるか、カーブはどこか)を予め車両側にインプットさせておくという手法です。 (編集済)


[22:47]

[22:47]
走行中、車輪の回転数から走行位置を割り出します。ただ、車輪だって空転・滑走することで、それだけで位置を割り出すとなるとやはり誤差が生じます。しかも、鉄道車両で使われている速度センサの場合、速い速度だと非常に正確に速度を割り出してくれるのですが、非常にゆっくりした速度だと、まぁまぁ誤差が大きいです。しかも、車輪も走っているうちに、レールと触れている部分に傷がつきます。なので定期的に車輪を切削してあげます。なので、車輪の直径自体が最大で約8cmも異なる場合があります。そんなに差があると、車輪が新品のときと比べ、車輪が1回転するたびに、約25cmもの位置推定誤差が生じるわけです。走行中、車輪はものすごい回っているので、補正をしないままだとものすごい誤差につながりそうですよね...なので補正してやる必要があります。それはどうやって?
線路側にある区間ごとに設置されている装置から(鉄道業界では地上子と呼ばれています)位置情報を定期的に受信して、補正してやります。(ここでもフィードバック制御が用いられていますね)そして、もっている位置情報をできるだけ正確な位置に保ちながら、予めインプットしてある位置情報(どこに登り坂や下り坂があるか、カーブはどこか)を常に照らし合わせます。そして、登り坂に近づいてきたとわかると、登り坂が始まる前から徐々にモーターの出力を上げ、登り坂に差し掛かった瞬間、理想的な制御を行い、坂道の間、ずっと速度を理想的な状態に保つのです。フィードフォーワード制御によってこのような素晴らしい速度制御が可能になったのです。まとめると、今までの定速走行制御だと、信号機の確認は運転士がやる上での制御ですが、信号機の情報も踏まえながら、フィードフォーワード制御をやってのけてくれるのが、現在の定速走行制御なのです。
(余談ですが、実は、みなさんもお世話になったことのある東海道新幹線のN700系の場合、このような制御によって、自分の走行位置を1mm単位で把握しながら走行しているんです!) (編集済)



[22:48]

[22:50]
東海道新幹線だとこのような例ですが、もっとみなさんの身近な電車でも、定速走行制御の応用の恩恵があります。

最近、駅にホームドア増えてきましたよね???
ホームドアがある駅って、少しでも停止位置がずれてしまうと(それこそ±35cmとかのレベルです)ホームドアが開かないんです。(マンパワーにこだわっている京急とかだと、京急蒲田駅とかで運転士が職人技で根性でぴったりに電車を停止位置に合わせてるんですが、そういうのは本当にごく僅かです)
そこで日本信号などのメーカー(このメーカー、鉄道の保安装置以外にも、街で見かける信号機も作ってるんです!)や鉄道会社、研究所は、加速と惰性走行は手動で、ホームドアのある駅に停車するときのみ自動で停止位置に合わせたらいいんじゃないかと考えました。(TASC制御といいます)

列車を決められた位置に自動で正確に止めるって、実はものすごく難しいんです。
先程も述べた通り、列車の速度センサーは速度が遅くなればなるほど不正確になりますし、残りの距離と信号情報と照らし合わせながらブレーキの強弱をリアルタイムですぐに反映しなきゃいけないんです。雨の日なんかだと、線路が濡れてるので、ブレーキの効きに変化があります。そんな中で、素早く決められた位置に列車を自動で止めなきゃいけないんです。そこで昔からあった定速走行機能が応用されています。低速走行機能にもともとあった、速度誤差を修正するフィードバック制御に加え減速度や、ブレーキの強さ、等々にも同様のフィードバック制御を行い、線路情報が登録された、車載データベースによりフィードフォーワード制御も同時に行うという、ということをなされて実現されたのです。
みなさんがホームドアのある駅でホームドアに守られて安全に、なおかつ遅延なく列車に乗れている背景には、このような定速走行機能を元にした技術の発展による恩恵があるのです。

以上が匿名からの後半の内容でした。

まとめると、

かつて人工知能とよばれていたが、いまはそうでない例(鉄道車両)
→定速走行機能

・定速走行制御の発展
フィードバック制御→フィードフォーワード制御へ

・定速走行制御の応用
速度を単に一定に保つ付加価値的機能から、
将来の自動運転を見据えた主力機能へ進化
→付加価値的機能から、安全にも繋がる重要機能へ発展

ということです。
2日間お付き合い頂き、ありがとうございました!

<参考文献>

DAY5

chiffon cake — 2023/07/17 18:50

2週間目に入りました。
chiffon cake が2日間担当します。
最近流行りの深層学習について簡単な導入をします。
[18:50]
まず機械学習とデータに潜むパターン、とは何かについて説明する必要があります.

ここでいうパターンとは、データ(今回は画像のみ)の中に存在する特定の規則性や関連性のことを指します。機械学習は、データからこれらのパターンを学習し、未知のデータに対して予測や判断を行います。パターンは、データの中に現れる共通の特徴や構造として表れます。例えば、画像データにおけるパターンは、特定の形状や色の組み合わせ、エッジや角の検出などです。テキストデータの場合、単語の出現パターンや文法的な構造などがパターンとして考えられます。

データ中のパターンを特定し、それを利用して新しいデータに対する予測や判断を行うことが機械学習です。その中で採用される学習アルゴリズムは、データの特徴やパターンを抽出し、モデルを構築する際にこれらのパターンを利用します。そして、学習済みのモデルを使用して、未知のデータに対してパターンを適用し、やりたい予測や分類などの特定のタスクを遂行します。

したがって、機械学習はデータを解析し、パターンや関連性を見つけるためのアルゴリズムや手法の総称となります。いずれの手法でも数学的な手法を利用して、データからモデルを構築し、予測や意思決定を行っています。

次に深層学習とは何かについてです。

深層学習は、機械学習の一分野であり、人工ニューラルネットワークと呼ばれるモデルを用いる手法です。深層学習は、多層のニューラルネットワークを構築し、それらの層の間で情報を伝達することで、データの特徴やパターンを抽出します。深層学習は、画像認識、音声認識、自然言語処理などのタスクで非常に高い性能を発揮しますが、大量のデータと計算リソースが必要です。

つまり、深層学習は機械学習の一部であり、より複雑なモデルと大規模なデータセットに焦点を当てています。一方、機械学習はより広い範囲をカバーしており、深層学習以外の手法やアルゴリズムも含まれています。

今回のWSでは機械学習一般でなく深層学習のみに絞ってご紹介します。
とくに深層学習とほぼ同義であるニューラルネットワークがどんなものかについて説明します。

[1日目]
ニューラルネットワークについてのガイダンス的な内容です。

深層学習ではニューラルネットワークNNというものを利用します。
現在となっては様々な種類のNNが存在しますが、元を辿ると人間の神経回路を数理モデル化したものがベースになります。
それがパーセプトロンと呼ばれるものになります。

パーセプトロンは、人工ニューラルネットワークの基本的な形式の1つで、初期の機械学習アルゴリズムの一つでもあります。1957年にフランク・ローゼンブラットによって提案されました。

パーセプトロンは、入力信号を受け取り、重み付けされた合計を計算し、その結果に基づいて特定の条件を満たすかどうかを判断するシンプルな設計です。典型的なパーセプトロンは、主に2つの要素で構成されます:

入力層(Input Layer): 入力データを受け取る層です。例えば、2つの特徴量を持つ場合、2つの入力ノードがあります。

出力層(Output Layer): 判断結果を出力する層です。通常、2値分類の場合は1つの出力ノードがあり、入力データが特定の条件を満たす場合に1(真)を、そうでない場合に0(偽)を出力します。

ちなみに特徴量ですが、データのパターンを知る手掛かりとなる量だと思ってください。画像の場合なら画像のサイズだけピクセルの値を並べたものです。他にも、コインが[表]か[裏]かという2択の事象も[1, 0]と[0, 1] という2次元のベクトル(高校数学参照)で符号化したものを特徴量として入力層へ渡せます。

パーセプトロンでは、入力に対して適切な重みが掛かって出力に渡されます。
出力に渡された信号の量が一定以上溜まれば1、そうでないときは0になります。
この信号量が一定以上かどうかを表すのがパーセプトロンの活性化関数(ステップ関数)です。(ふーんくらいで大丈夫です)
これにより活性化関数がトリガーされる条件を制御します。

以上がパーセプトロンの概要です。人間が五感を通じて情報を受け取って判断する様を表現する自然なモデルに思えますね。

パーセプトロンは、線形分離可能な問題に対して適用されます。大雑把にいえば、入力信号がシンプルなケースに適しています。しかし、非線形な問題、もっと複雑な入力に対しては単一のパーセプトロンでは解決できないことがあります。

この問題を解決するために、多層パーセプトロン(MLP)やより複雑なニューラルネットワークの形式が開発されました。これらのネットワークは、複数の隠れ層を持ち、複雑な入力にも対応できるようになりました。これを機械学習に適用することで、より高度な機械学習タスクを実行することができるようになりました。

はい、それが深層学習です。


DAY6

[2日目]
本日は, 深層学習で生成をするモデルの一つであるGANについて紹介します.

GAN(Generative Adversarial Network)は、生成モデルの一種であり、2014年にイアン・グッドフェローによって提案されました。GANは、データの生成や画像、音声、テキストなどの創造的なタスクに優れた性能を示すことで有名です。

GANは、2つのニューラルネットワークモデルで構成されます:

生成器(Generator):これは、ランダムなノイズを入力として受け取り、データのサンプルに似た出力を生成します。例えば、画像の場合は、ランダムなノイズを画像に変換する役割を持ちます。初期段階ではランダムな画像を出力するが、訓練が進むにつれ、よりリアルなデータに近いサンプルを生成できるようになります。

識別器(Discriminator):これは、生成器が生成したデータ(偽のデータ)と本物のデータを区別する役割を持ちます。例えば、画像の場合は、与えられた画像が本物か偽物かを判定するモデルです。初期段階では、判別が難しいため、ランダムな予測が行われますが、訓練が進むにつれ、より高精度な判別を行えるようになります。

GANは、これら2つのネットワークを対抗させるように訓練します。生成器は本物のデータに近い偽のデータを生成し、識別器は本物と偽物を正しく判別できるように学習します。訓練が進むにつれて、生成器と識別器はお互いに高度な能力を持ち、最終的に生成器は非常にリアルなデータを生成するようになります。

GANの最大の特徴は、訓練プロセスが非常に競争的であり、一方のモデルの性能向上が他方のモデルの性能向上に寄与する点です。この対抗的な学習が、高品質な生成結果をもたらす要因となっています。GANは、画像生成、画風変換、音声合成、自然言語生成など、様々な応用分野で成功を収めており、AIによる創造的なタスクにおいて革新的なアプローチとして注目を集めています。

もっとも深層学習の生成モデルは何もGANだけではありませんが、むしろかなり異端児的な存在ですが、理解に必要な知識が比較的コンパクトなので紹介することにしました。

DAY6

chiffon cake — 2023/07/20 00:43

[3日目]の投稿はありません。
明日はTsuboさんになります。

DAY7

Tsubo — 2023/07/21 02:29

こんばんは.今日から三日間は僕の担当です.突然ですが,皆さんは「拡散モデル」というものの存在は聞いたことありますか?
「拡散モデル」という言葉は聞いたことなくとも,最近画像やイラストを自動生成してくれるなんかすごいAIが出てきたらしいということは耳にしたことがあるのではないでしょうか.今回は,この「拡散モデル」について扱おうと思います.まず1日目は,「拡散モデル」によるイラスト・画像生成の実例の紹介,2日目は「拡散モデル」の具体的な紹介と,イラスト・画像生成を実際に制作できるサービスなどの紹介(専門用語で”環境構築”といいます),3日目は「拡散モデル」を発展させ,さらに美麗なイラストや画像を生成する手法について説明しようと思います.

まずは,以下のイラストをご覧ください.
[02:30]


らいと Twitter:@ai_lightmako


852話 Twitter:@8co28


mir.AI Twitter:@n3vermind_mir

[02:30]
引用:(1枚目:らいと Twitter:@ai_lightmako, 2枚目:852話 Twitter:@8co28, 3枚目:mir.AI Twitter:@n3vermind_mir)
[02:31]
このように,「拡散モデル」は,まるで一見して人間の手によるものと見分けがつかないによるイラスト・画像を生成することができます(なお,上の例では「拡散モデル」の結果に加筆・修正されたものを含んでいます).このようなイラスト・画像生成はどうやって実現されているのか,具体的に説明しますと,まず「ニューラルネットワーク」を用いて「”少女”,”特定のキャラ名”,”俯瞰や呷りといった構図”など複数の単語の組み合わせ」から意味を抽出し,そして抽出した意味をもとに「拡散モデル」を用いて画像・イラストを生成しています.つまり,人間は望むようなイラストの情報を示す複数の単語を入力することで,このような美麗なイラストを生成できるのです.入力する単語群によってイラスト・画像生成の結果が大きく変わるため,この単語群は「呪文」とか言われたりします.どのような「呪文」を実際に入力しているのか知りたい方は,「プロンプト 呪文」とかで検索するといいかもしれません.

しかしながら,「拡散モデル」によるイラスト・画像生成も完璧ではありません.「拡散モデル」によるイラスト・画像生成は,一般的には,以下のような弱点を抱えていると言われています.
1.特に人間の手といった,複雑な部位の描写が苦手
2.瞳など細かいところに注目してみると破綻している部分が多い. (編集済)
[02:31]
1.は特に有名な弱点です.例えば,以下のイラストをご覧ください.
[02:31]

mir.AI Twitter:@n3vermind_mir

[02:31]
引用:(1枚目:mir.AI Twitter:@n3vermind_mir)
[02:32]
キャラクター(“推しの子”の星乃アイ)の左手に注目してください.一見,とても美麗なイラストに見えますが,左手が四本指しかないことがわかりますでしょうか.おそらく中指だと思われる関節が欠けてしまっています.
人間の手と指というのはかなり柔軟な動きをして,人間でも人体の中で描くのが一番難しい部分だとされています.このようにとても複雑な人間の手と指は,流石の「拡散モデル」でも苦手なようです.

また,一番最初に挙げた中で1枚目のイラスト(“五等分の花嫁”の中野五月)の瞳に着目してください.よくみると,人間の虹彩と黒目に当たる部分の描写が崩れていることがわかります.このように,「拡散モデル」は細かい部分を探すと破綻している箇所が存在している場合がよくあります. (編集済)
[02:32]
総じて,「拡散モデル」によるイラスト・画像生成は「絵を描く」という今まで限られた人間にしかできなかった技術を,あらゆる人に解放したと言えます.この「拡散モデル」を用いれば,自分が頭の中で思い描いたイラストや画像をある程度自由に生成し,表現することが可能です.もちろん「拡散モデル」によって生成された結果は,先に挙げた通り細かいところに注目すればまだまだ甘い部分が目につきます.この甘い部分を修正したり,また加工等を加えることで「拡散モデル」によって生成された結果をさらに美麗で優れたものにするには,イラストを観察・理解し,イラストを自分で描ける能力が必須でしょう.
また,学習データの出典など用いたデータセットの性質,既存の作品における著作権と,出力結果の関係などは議論が続いています.

しかしながら,例え一部分であっても自らが表現したかったものを誰でも表現できるようになったことで,創作に携わる人間が増え優れた作品がさらに増えることが期待されます.

翌日は,「拡散モデル」の具体的な紹介と,イラスト・画像生成を実際に制作できるサービスなどの紹介したいと思います. (編集済)

DAY8

Tsubo — 2023/07/22 04:42

もはや朝といった方がいい時間帯ですが,こんばんは.実は自分のPCにてイラスト生成を実際に試してみたところ沼ってしまい,こんな時間帯になってしまいました.なので,今のところは「拡散モデル」の具体的な紹介を抜きにしてイラスト・画像生成を実際に制作できるサービスやツールを紹介するだけにとどめたいと思います.今日の夜には「拡散モデル」,および「拡散モデル」を発展させる手法について紹介したいと思います.
[04:31]

これが大元の「Stable Diffusion」です.「Enter your prompt」の項目に,先日お伝えした「呪文」を色々入力することで,それに適した画像やイラストを生成することができます.
ただ,このStable Diffusionはどんなイラストや画像でも生成できるわけではなく,生成物はどちらかというと抽象画のようになる傾向にあります.アニメ風のイラストを生成するなら,以下のようなデモサイトがあります.
[04:42]

[04:44]
...適当に試していただけたらわかると思うんですが,単純に単語を入れるだけだとなかなか綺麗なイラストは出力されてきません.なので,プロンプト(StableDiffusionで言うところの"Enter your prompt"の項目)を工夫し少しでも綺麗なイラストをなんとか出力しようという試みが発生するわけです.
[04:45]
また,Stable Diffusionをガチガチに使いこなし,昨日挙げたような,人によるものと区別がつかないようなイラストを生成するためのサービスとして,「Stable Diffusion Web UI」があります.僕も今色々試している最中です.
[04:46]

[04:47]
上の記事は,MacOSへの「Stable Diffusion Web UI」の導入に関する紹介記事です.この「Stable Diffusion Web UI」によって例えばアニメ風のイラストの生成が超得意なモデルを利用したり,生成結果が特定のキャラクターに似るようにできたりします.おそらく,昨日挙げたイラストもこの「Stable Diffusion Web UI」を用い,複数のモデルやパラメータを試しながら生成したものだと思われます.

ようやく沼から脱出し、こんな感じのイラストが作成できました.

DAY9

Tsubo — 2023/07/23 02:49

こんばんは.今日は「拡散モデル」の概要とその特徴の説明,「拡散モデル」を用いて特定のキャラクターを生成する手法などについて説明します.扱うテーマは主に
・「拡散モデル」はどう言うモデルなのか.ニューラルネットによって何を学習しているのか
・「拡散モデル」はどのような既存手法と比べて,何が優れているのか
です.

・「拡散モデル」はどう言うモデルなのか.ニューラルネットによって何を学習しているのか
「拡散モデル」とは,データ(ある写真など)に微小なノイズを次々加えていく(“拡散”していく)過程を逆に辿れば,ノイズからデータが生成できるんじゃね?という考えのもと設計されたモデルです.
…なんのことかさっぱりわかりませんね.
ある写真などのデータから微小なノイズを加えていけば,やがては完全なノイズ(ホワイトノイズ)になってしまいますよね.逆に,その時々で加えられたノイズが分かれば,完全なノイズからある写真が再現できると思いませんか?
そして,大量のデータについてそのように「あるデータが完全なノイズになるまでに加えられる,各段階における微小なノイズ」がわかったとしましょう.もしそうであれば,生成したいデータと似たようなデータを探し,完全なノイズから似たデータを生成するまでに至る微小なノイズを使えば,大抵のデータを生成できると思いませんか?
この「ある写真などのデータが完全なノイズになるまでに加えられた微小なノイズ」をニューラルネットによって推定しているのが,(僕の理解では)現在の「拡散モデル」による画像・イラスト生成モデルです.

実際に,Stable_Diffusionなど「テキストから画像・イラスト生成する」モデルではどういったデータを学習しているのかを説明しようと思います.Stable_Diffusionでは,ある写真やイラストに含まれている要素(どんな人物か,どんな服を着ているのか,背景..etc)を示すテキストとともに,ある写真やイラストを完全なノイズから生成する過程を学習することにより,ある写真やイラストと,それに含まれている要素を結びつけ,テキストが入力されたらそれと似たような写真やイラストを生成しています.

なお,テキストはそのままの形では「拡散モデル」に突っ込めないので,これもまたニューラルネットワークで言語情報をベクトル化して「拡散モデル」に入力しています.また,例えばアニメや,いわゆる二次元イラストを多く含むなど学習するデータセットの特徴により,モデルの得意とする領域が変わってくるのだと思います.

また,Stable_Diffusionなど実用的なモデルでは,画像をそのままの形で扱うのではなく,圧縮して扱うことで精度を落とさず,効率的に処理を進められるようにしています.

・「拡散モデル」はどのような既存手法と比べて,何が優れているのか
「拡散モデル」が流行する前の画像生成モデルとして,chiffon_cakeさんが言及されたGAN(敵対的生成ネットワークモデル),VAE
(Variational AutoEncoder:変分オートエンコーダー)などがあります.

「拡散モデル」がこれらのモデルと優れている点として,学習が安定的かつ効率的に行えるので,より大きなモデルで,大量の学習データを扱えると言う点があります.これは一見すごく単純に見えますがめちゃくちゃ強力で,「モデルの大きさを大きくするほど,学習に用いるデータを多くするほど性能が上がる」という「スケーリング則」に基づき,人間と見分けがつかないほどの対話性能を実現したChatGPT(Transformerモデル)を見ればその強力さがわかりますね.

また,「拡散モデル」は,既に学習されたモデルに対し再調整が容易であると言う特徴もあります.これにより,二次元イラストの生成を得意とするモデルに対し,ある特定のキャラクターの特徴をより反映させたイラストを生成するようにすることができます.これをLoRA:Low-Rank Adaptation 低次元追加学習 と言います.先日あげたキャラクターイラストは,おそらくこのLoRAを使って生成しているものと思われます.このLoRAは,「拡散モデル」だけでなくGPTモデルについても用いられているようです(むしろこっちがメイン) (編集済)
[02:50]
以上の説明は数式を用いていないかなりフワッとした説明なので,もし「拡散モデル」について興味を持たれた方がおられましたら,以下の文献を参考にしてみてください.

それでは,投稿するのが毎回日付を回ってしまっていたのですが,3日間ありがとうございました.

けろたん — 2023/07/23 23:57

部長による締めの言葉 (と反省の弁と投稿されるはずだった文章) は広義の今日中に投下します。。。最後までぐだっており申し訳ありません。。。

DAY10

けろたん — 2023/07/24 03:14

部長からのディレクションが「人工知能関連でいい感じにおねがいしやす」程度だったにも関わらず、自分の興味や専門から興味深い発表を行っていただいた部員の皆さんありがとうございました。本来は土日に部長発表(人工知能史&知能について)があるはずでしたが、忙しさを言い訳に座談会もろともすっぽかしてしまいマジで申し訳ありません。事後記事に追記するといいたいところですが、後述する情報社会論的なものに対するモチベーションの迷子により、書く書く詐欺になる予感しかしません。気合の入った発表を作っていただいたり、部内外からわざわざ座談会に集まっていただいたにも関わらず、僕の不手際によって座談会やWSを通した部内外交流の機会が失われてしまい申し訳ありませんでした。うすうす感じてはいたのですが、指針の提示、動機づけ、事務連絡等々、マネジメント能力に欠けているっぽいです。近頃はタスク管理的な作業能力だけでなく、原因は不明ですが小難しいことを考えるモチベーションも著しく低下しています。例を挙げると、デジタル社会における技術論とか、プラットフォーム論とか、SFと哲学と社会評論が混ざったような事象に興味があったはずなのですが、以前ほど、そういった対象について考えるのに楽しさを感じなくなってきました。原因の一つは、近頃意図的にネットニュースやSNSから離れているためかもしれません。きっかけは、社会問題、時評的なネットコンテンツに自分の興味や関心が左右され、時間を浪費しているかもしれないという危惧によるおためし的なネット経ちだったのですが、ここまで自分の興味の持ち方が変わるということは、それらの問題意識がもとより擬似的な興味だったからかもしれません。いずれにしても、事務の遂行とは全く別問題なので単なる業務放棄の言い訳なのですが。社会評論といえば、直近まで自分のなかで繰り返されていた小難しいことを考えるときの思考のパターンがあって、1. 当たり前でつまらないと思われていることが実は深い2. 浅かろうが深かろうが、それらの相対的な適切さを人間が判断する基準と問題事態の困難さは独立しているので、相対的にマシなものでも絶対的には不十分なことを指摘する、という1と2の組み合わせで語る、というものです。半年ぐらいマイブームだったのですが、説得的でアクロバティックな理屈を立てたり、大喜利的な頭の使い方に慣れても、人文学者や芸人になるわけでもないので虚しさを感じています。
いつのまにかよくわからない文章になってしまいましたが、これにて情報科学部のWSはおしまいです。2週間ありがとうございました!!!


この記事が気に入ったらサポートをしてみませんか?