放送大学全科目感想 008 計算の科学と手引き(’19)

  • 情報コース
  • テレビ科目
  • 辰己丈夫先生(放送大学教授)
  • 高岡詠子先生(上智大学教授)
  • 西田知博先生(大阪学院大学教授)
  • 村上祐子先生(立教大学特任教授)
  • 難易度 ★★★★☆
  • おすすめ度 ★★★★☆

4人の先生が交代で、計算機科学の基礎となる理論をかなり突っ込んで解説する、導入科目とは思えないほど高レベルの講義が展開される。15回で数、暗号、プログラミング、アルゴリズム、確率、符号化、論理演算、記号論理学、などなど幅広いテーマを詰め込みまくりで高密度な講義が目白押し、理解できれば達成度も高いが難しすぎるという学生も大勢いるだろう。特に村上先生のパートは難解で理解に時間がかかる。個人的には、高岡先生パートがおすすめ。聞き手の雨宮さんは京大卒のイケメンで、理解力が高すぎて学生が置いていかれることもしばしば。

第1回

コンピュータにおける数の表し方から。聞き手は雨宮さん(男性、珍しい)

数と数字の違い。数字は数を表す文字のことで、表し方が多様である。数は文字で表さなくても概念として存在している。例えば個数。碁石でもテキストでもなんでも表せるし、文字で表さなくても表現できる。

個数を数える時は「同じ」かどうかで判別する。同じかどうかは相対的なものである。赤と青のコップがあったら、コップ自体は別のもので1つずつだが、「コップ」でくくれば2つとなる。

数の定義。自然数はここでは0を含むらしい。太文字のN。整数はマイナスを含んで太字のZ(Zahl:独)で表す。有理数は太字のQ(quotient:英)。実数はR。無理数は実数の行き着く極限という考え方らしい。例えばπは3→31/10→314/100→3141/1000→…と極限に進んでいくから。無理数=比で表せない数のこと。

記数法とは。数字を使って数を表す方法で、文化によって違う。アラビア数字とか漢数字とか。私たちが使っている記数法を、位取り記数法という。アラビア数字を桁が上がるごとに左に追加していく記数法のこと。n進法は、n個の数字を使った位取り記数法と定義できる。十六進法は0x2C、十進法は0d44、八進法は0o134、二進法は0b101100などと書く。

いろんな記数法について。古代バビロニアの数字は10進法で0がない。ローマ数字はI(1), V(5), X(10), L(50), C(100), D(500), M(1000)を使う。444はCDXLIV。実例として昔の看板がでてきた。MDCCXLVIII(1000+500+200+40+8 = 1748年)。

そろばん。位取り記数法で10進法。十干十二支は位取り記数法ではない。十干と十二支を組み合わせて数字を表す(しらんかった!)なんと両方とも同時に動く。10と12だから組み合わせは10*6=60通りで、奇数ずれは存在しないから半分の組み合わせは使われてない。

命数法。大きな数を表すときに使う。万とか億とか。10の4乗ずつ進む。万進法ともいう。英語は千進法。なお、2進法で大きい数を使うときは、KiB(2の10乗=1,024)が単位となる。ギガはGiB=1,073,741,824、2の30乗なので一般的なギガより少し多い。

桁区切り。ドイツは千九百を1.900みたいに書くらしい。フランスだとスペース区切りで、1 900。

辰己先生は文字通り、数字に強い先生だな!

第2回

二進法やビットについて。宇宙人の指が14本だったら?14進数になるのではないか、という話から始まった。

固定長表記と可変長表記。固定長と言えば電話番号と郵便番号、ロッカーとか。0が付く固定長と、つかないもの(ナンバープレートとか)がある。なぜ固定するか。範囲を決めておくと便利なことが多いから。固定長でオーバーフローすると、桁あふれが発生する。桁あふれが発生すると、右側だけ見て計算したのと同じになる。昔のゲームのバグはだいたいこれを利用したものが多いですよね。アイテム無限増殖バグとか。あれは桁あふれもあるけど、メモリ破壊を使ってる気もする。

二進法を十進法に直すやりかた。ちょっと変わったやり方をしてる。2倍して1を加えたり加えなかったり、を繰り返してる。たしかにそれでもあり。十進法→二進法は、高校でもおなじみの2で割っていくやり方。2倍して1を加える…のやりかただと、なぜ2で割っていって余りを並べていけば2進法になるのか、がわかりやすい。なるほどなー。これ授業で使ってみよ。

百進法。[00] [24]みたいに2桁で1桁というように扱う。[99] + 1 = [01][00]。見た目は十進法っぽい。なんで先に百進法が出てきた?いうと二進法と十六進法の関係がまさにこれだから。

2C9(16)→[0010](2) [1100](2) [1001](2)→1011001001(2)

110100100(2)→[0001] [1010] [0100] → 1A4(16)

というわけ。

小数とは。10進法なら1桁動けば10倍だけど、2進法なら2倍。小数点以下3桁なら8で割ればいい。2進法を2倍していけば10進法に直せる。が、2倍していっても一生終わらない場合があって、これは循環小数になる。二進法の循環小数も有理数になる。これは証明も可能。ちょっと速いのでここはテキストでしっかり復習したい。

椿の目付字。江戸時代に2進法があったという話。これいったいどういう仕組みなの。。?すげー不思議。

指数対数の話。対数の例としてデシベルの話を、放送大学の音声担当さんに取材してる。

デシベルは絶対ではなく相対的な話。音声業界では、最高に出せる音を0dBFSと呼んでる。放送大の音声は、-20dBFS(0dBFSの10分の1)を基準にしている。騒音レベルは、可聴範囲の最小限を0dBとしてそこから上げていく。100dBが地下鉄、120dBがジェット機くらい。なぜデシベルか。対数にすると刻みがちょうどいい感じになるから。100倍とか1000倍とか言ってもよくわからんし。

デシベルは20上がると10倍、つまり10の0.05x乗倍だけど、マグニチュードは1上がると31のx乗倍。1上がって31倍。2上がれば31の二乗で1000倍。でかいですね。

第3回

今日から高岡先生。計算とは何か、という話。

四則演算の仕組みの話。13*18の計算を筆算するときは、13*8と13*10を足す。

68*62を暗算するときはどうする?十の位が等しい、一の位を足すと10になる場合は、まず60*70 = 4200を計算する。さらに、8*2=16を計算する。足して4216が答え。なんで?

→(x+a)(x+10-a) = x^2 + 10x + a(10-a) = x(x+10) + a(10-a) で、x=60, a=8とおいたものと等しいから。xの1乗の項の係数がちょうど10になるところがポイントだと思う。

47*67はどうするか。十の位が足して10、一の位が同じ。

→(10a+b){10(10-a) + b} = 100a(10-a) + 100b + b^2 = 100{a(10-a) + b} + b^2 で、a=4, b=7とすればいい。(4*6+7)*100 + 49 = 3149となる。今度は、前半が100でくくれるところがポイントかな。

次に一般的な問題。13*18。ちょっと複雑なので文字で表すのは無理だけど、長方形を切り取って貼り付けて・・・を繰り返すと、(10+8+3)*10 + 3*8 = 234 と計算できる(らしい)。

32*26。32 = 20 + 12、26 = 20 + 6と考える。すると32 * 26 = (20+12+6) * 20 + 12 * 6 = 760 + 72 = 832となる。工夫の問題。

次は割り算。621 / 45はいきなり計算したくないが、ここで公約数3を考える。207*3 / 15*3 = (207/15) * 3 = (13あまり12) * 3 → 13あまり36(=12*3) と考えればいい。

合同式。5≡8≡11(mod 3)とか。5≡8→5倍してもいい。25≡40となる。

(17*19*23) / 13の余りは、17, 19, 23を13で割って、余りを掛け算すればよい。4*6*10≡4*6*(-3) = -72 ≡ -72 + 13*6 = 6となる。13*6を足すとこが、勘が必要になりそうな気がする。

で、ここまでの話はどうコンピュータに関係してるのか。東大の喜連川(きつれがわ)教授の研究室を訪ねた。ビッグデータがメインの研究で、ナンバーワン(=競争が激しい)よりオンリーワン(=誰もやったことのない)の研究をすることをモットーとしてるらしい。具体的にはでかすぎるデータ。サイバー空間内のソシオシステムというのが対象らしい。サイバー空間が現実の射影と考え、現実がわかるかも?という信念に基づく。日本語のページを全部集めたりしているらしい。

日本の一級河川のデータをリアルタイムで集めたものを研究したりもしている。25ペタバイト(!!)のデータがある。豪雨のときのデータなども集めている。あと、データベースの非同期による命令(!?)の研究もしているらしい。順序実行原理というものを開発して、プロセッサの数を増やさないでも100倍~1000倍の実行速度になったらしい。本当に珍しい研究が多い。発想で勝負できる。

非順序型データベースエンジンの解説。従来型データベースは処理順序がプログラムで決定されている。これを非決定的にする。ストレージが返せる順番で順番にデータを返していく。すると単位時間あたりの処理量がとても多くできる。実際のデモも見せてもらった。HDD24台分の10億件のデータを抽出する。従来型だとハードディスクが暇な時間が多い。20分かかる。非順序型にすると、ハードディスクのランプがよく点滅する。10秒で終わった。すげーー-。

仮想機械の話。チューリングマシン。現在のコンピュータと全く同じらしい。マシン、ヘッド、テープから成る。ある状態→テープから記号を読み取る→書き込む→ヘッドを動かす→状態が変わる、ということを繰り返す。これがコンピュータの基礎になる。トレースしないとよくわからん。要復習

第4回

誤り訂正、暗号化法など。

まずはパリティビットの考え方。最終列、最終行に偶数or奇数を決めておいてチェック用のビットを置く。するとエラーが発生しているかどうかわかるし、1ビットの誤りなら訂正できる。そういえばPCが「パリティエラー」ってエラー出してビープ音が鳴って起動できなくなったことがあったなあ。あれはメモリかHDDのデータが壊れてたんだな。

チェックサムも同じ仕組み。これはISBNコードでの例。

①チェックサム以外の奇数桁の和をとる。

②偶数桁は3倍して足す。

③①②の和の下一桁をとる。

④10-③とチェックサムが等しいかチェックする

ISBNコード以外のチェックサムは多分違う仕組みだろう。放送大のIDの最終桁チェックサムなんじゃない?商品のバーコードもそうだよね。

暗号。まずはシーザーの暗号から。アルファベットをずらす。ずらす文字数が暗号鍵といえる。共通鍵暗号方式である。鍵を第三者に知らせずに送信するのが難しいのが問題。

これを解決したのが公開鍵暗号方式。暗号化を公開鍵で行い、秘密鍵で復号する。秘密鍵を送らなくていいので安全だが計算量が多い。また、電子署名はこの逆で、秘密鍵で暗号化し、公開鍵で復号する。実は今までここら辺の関係を散々聞いてたのに全然わかってなかったのだけど、意味わかったので助かりました。

クレカの暗号化の仕組み(SSL)。SSLはハイブリット方式といい、共通鍵と公開鍵を両方使う。通信データの暗号化には共通鍵を用い、共通鍵を暗号化するのに公開鍵を使う。

具体的には、

①クライアントからSSLを要求

②サーバ→クライアントに公開鍵を送信

③クライアントは共通鍵を生成し、サーバの公開鍵で暗号化

④サーバはクライアントにもらった暗号化された共通鍵を、サーバーの秘密鍵で復号(鍵はデータ量少ないから復号が速い)

⑤これで共通鍵が両者に渡ったので、安心してクライアント⇔サーバ間で共通鍵で暗号化したデータを受け渡しする

ってわけか!よくわかった!

電子署名。本人証明と非改竄証明の両方の機能がある。本人証明には、なりすまし防止のため、PKIという仕組みがある。鍵の有効性を第三者に認証してもらうことで信頼性を高めている。非改竄証明については、平文→一定の手法で要約→秘密鍵で暗号化→受け手側が公開鍵で不幸語か→受け手が行った平文の要約と一致しているか確かめる、というやり方。ここでは要約って言ってるけど、たぶんハッシュ関数のことだろうな。説明しづらいから要約って言ってるだけで。

RSA暗号について。素因数分解を使うということまでは知ってたけどちゃんと解説してもらえるらしい。短時間でできるのか?

まず素数の説明。2と自分以外では割れない数。次に余りの話。合同とはnで割った余りが等しいこと。a≡b(mod n)のように書く。

RSA本体の説明。まず暗号化プロセスでは、平文をe回掛け算する。そしてnで割る。これを暗号化鍵(e, n)と呼ぶ。

復号プロセスでは、暗号文をd回掛け算して、nで割る。すると平文に戻る(!?)。これを秘密鍵dと呼ぶ。

このようなことが可能である正の整数e,d,nの組み合わせを作るのが難しいところが、RSA暗号のキモということになる。

前提として、平文をe乗して、さらにd乗すると、元の平文に戻るという仮定があるらしい。なんでed乗すると元に戻るのかは謎で、よくわからんかった。(→余りの話をしているから大丈夫と後でわかった)

さらに、割り算に使うnは、素数pとq(どっちも大きめ)の積ということにしておくと、edは(p-1)(q-1)で割った余りが1になるように選べばいいらしい(なんでじゃ!?→直観的には、余りを1にすれば、何度も掛け算していった後に最後の1乗が効いて、元の文が復元するからだと思う。要数学的証明→やりました https://t.co/v7J1KjcyG7 こっちも参照→RSA暗号の正しさを徹底的に証明する – Qiita)。

実例。

平文M=4とする。鍵に使う素数p=3, q=7とすればn=21、(p-1)(q-1)=2*6=12と互いに素になるように(なぜ!?→互いに素にしないと、edを12で割った余りが1にならないから)eを選ぶ。とりあえずe=5にする。

暗号化。M=4の5乗で、4*4*4*4*4 = 16*16*4 ≡ (-5) * (-5) * 4 = 100 ≡ 16(mod 21)。暗号文C=16になった。

次は、β=edの候補。 (p-1)(q-1) = 12で割った余りが1になる数は、13,25,37,…だけど、e=5にしたから、d=5(β=25)か17(β=85)にしないといけない。とりあえずd=5にする。

では復号化する。d=5にしたから、また5回かけてn=21で割る。16*16*16*16*16 = 32*32*32*32 ≡ 11*11*11*11 = 121*121 ≡ 16*16 ≡ (-5)*(-5) = 25 ≡ 4 (!!!) と、元に戻った。

公開鍵のnは公開しておいてもよいが、pとqが分からなければ破れない。つまり、素因数分解しづらいnを選んでおけばいいというわけ。nが100桁でも現代コンピュータでは結構難しいらしい。実際は300~1000桁のものが使用されているらしい。1桁上がるだけでめっちゃ破りにくいらしい。

やっとRSA暗号の仕組みがわかった!しかもほんの30分くらいで!先生ありがとう!

村上先生にチューリングのエニグマについて聞く。2014年イミテーションゲームという映画の暗号解読の話。ナチスドイツの暗号はエニグマというしくみで計算されていた。チューリングが作った自販機くらいの大きさの機械が出てきた。なんでこれで暗号復号ができるんだ!?こいつをつかってイギリスがナチスドイツの暗号を破って勝利したらしい。もっと暗号の度合いが高いローレンツ暗号器もイギリスがコロッサスという解読器で破ったらしい。でっかいテープを読み取る装置が出てきた。0.6秒に1クロックという速さだったらしい。当時、コンピュータは人間コンピュータを意味し、女性の仕事だったらしい。そういえばこの科目の教授、2人も女性がいる。中谷先生もいるし情報系は女性に相性がいいように見える。でも日本だと情報科学は男性ばっかに見える。何かおかしいのではないか。私も以前は情報科学は男性向きだと思っていたが、どうもそうではないらしい。

第5回

画像と音声のデジタル化の話。今日も高岡先生。

まず音の話。振幅と周波数、周期の説明から。雨宮さんよくわかってる人っぽいけど、調べたら京大院卒、日本科学未来館のコミュニケーターさんだったよ。

雨宮 崇 TAKASHI AMEMIYA | ブルーバックス (ismedia.jp)

さて音の波が0-1に変わるまではどうするのか。標本化→量子化→符号化をする。標本化とはデータを一定間隔で区切ること。よく言われるサンプリング周波数(44.1kHzとか)ってのは1秒間の標本化の数のこと。可聴周波数の2倍のサンプリング周波数が必要なのはなぜか。ナイキスト、クロードシャノン、等が「標本化定理」として証明したらしいから難しい話っぽい。要調査。それにしても予想を超えていつも一気に難しい話になるなあ。楽しいけど。

ハイレゾにはどんな意味があるか。聞こえない高周波、100kHzとかは脳によいと言われている。ハイパーソニックエフェクトやん。ここでも紹介されてる。

量子化は標本化した波形を離散的な整数の値に変換すること。ビット数が多ければ元の波形に近づく。音楽CDは16ビット=65536段階。ハイレゾは24ビット=1670万段階。ビットが変わると臨場感も変わるんだって。

最後に符号化。標本化と量子化で得られた数値を2進数で表すこと。2進数はビットの窪みで表せる。CDの量子化の掛け算を実際に行う。10分は16ビット=2バイト*44100Hz*10分(600秒) = 50MB。70分で350MB。ステレオなら2倍で700MBになる)。たしかにこんなくらいだね。

次は画像。標本化は画像データを区切ることになる。解像度とは画像をどのくらい細かく区切るかということになる。量子化は1つのピクセルをどのように表現するかという問題になり、量子化ビット数は色の数に対応する。モノクロなら2色、RGBならまあ24ビット640*480(古いな!)の生データは24*640*480=1MBになる。いわゆるフルカラーは24ビット1677万色だが、48ビットにすると281兆色(!)になるらしい。

次は社会の情報の可視化。喜連川研究室の取材が出てきた。ソーシャルメディアの可視化の話。ってtwitterじゃん。震災の際の情報の広がりを見た。阪神大震災に関連付けたある1つの避難情報(ガスの元栓を閉めろ!みたいな)をRTしていく様子が、まるで蜘蛛の巣っていうか花火みたいに広がっていく様子が可視化されている。もう少し縮小すると、微生物の繁殖みたいにコロニーがいくつかできている。コロニーはだいたい有名な人がリツイートすることでできるみたい。こういうノードのつながりみたいな可視化ツールってどうやって作るんだろうな。やったら楽しいじゃん。twitterはAPIも公開されてるし、作るの楽なのかもなー。リアルタイムで見ることができるとめっちゃ面白い。社会全体の動きを知ることができる。教授やマーケティングで実際にもう利用されてるらしい。

プリンタの話。モニタとプリンタと色の表現方法が違う。モニタは加法混色という。混ぜると明るくなる。RGB方式。印刷は減法混色。混ぜると黒くなる。CMYK方式。変換については印刷教材について書いてあるらしい。楽しみ。

ビットマップとベクタの差異について。ベクタは図形の点、線、面を数値で表したものなので拡大縮小には強いが、複雑な色情報を持つのが難しい。ビットマップ→ベクタの変換はまず無理らしい。

アナ→デジ変換について。実際に変換する(!?)。紙を縦に四等分して切ってる。2人ともA~Dと名前を付けて、Eiko, 雨宮と書いた(洗練されたYouTube動画なら、ここは5倍速再生してるところだ!)。先生がAに点を打って、雨宮さんが目視でBに同じ場所に点を打った。雨宮さんがAに点を打ち、先生がBに目視で点を打った。

次はAの紙を半分に折って、点が左にあれば0、右にあれば1と書く。以後繰り返して01を書いていき、線の上に点が乗ったら1と書いて終わり。実はこれで、紙の左側からどのくらいに点を打ったかが分かる。先生のAでこれを行うと、011となった。これは0.011 = 3/8ということになる。これは、点の位置のデジタル化に相当する。雨宮さんのAは0.111→7/8になった。

次にCにAで計算した値を書いて相手に渡す(デジタル信号の伝送)。さらにCを書かれた01に従って折っていき、点を書く(デジアナ変換)。次にAを交換するとA、B、Cを比較できる。AとCはデジタル変換なのでほぼあってるが、Bは目視(アナログ→アナログ伝送)なのでだいたいずれてる。という面白い実験でした。紙を使ってもデジタル伝送ってできるんだね!!

第6回

題名が「おはなしコンピュータ」!?今回から西田先生が4回担当する。関西弁だ。コンピュータがどうやって計算していくのかという話らしい。

まず温度計のようなPCを用意した(超ミニwinPC?)。温度センサーというinputをコンピュータが処理して、液晶outputに最高気温を出力する装置。

変数の説明から。変数委は名前と値が必要。アドレスと名前が紐づけられている。次は情報処理技術者試験でおなじみの疑似コードでif文、代入の説明。まずmaxにセンサーの気温を代入(ちゃんと初期化してた。)次はtempにセンサーからの気温を代入し、temp > maxならmaxを更新する。これを1分ごとに行えばOK。一日分なら1440回ループすればよし。

さっきのミニPCを図解してる。入力装置、出力装置に加えて、記憶装置、制御装置、演算装置で構成される。CPUにちゃんとヒートシンクついてる。記憶装置は主記憶装置(メモリ)と補助記憶装置(HDD、SSD、USBメモリ等)に分類できる。そういえばCD-ROMやDVD-ROMってもう下火だよね。みんなダウンロードになっちゃった。出現したときは革命だったのにもう割に合わなくなってしまった。

CPUとメモリの関係。CPUはレジスタ、ALU(算術論理演算装置)、特殊なレジスタ(プログラムカウンタ、命令カウンタ、メモリアドレスレジスタ)で構成される。レジスタはCPU内のメモリみたいなもん。プログラムカウンタコンピュータが次に実行する命令のメモリのアドレスを示すレジスタのこと。命令レジスタ、メモリアドレスレジスタは命令の保存、データの位置を保存するレジスタ。

アセンブリの疑似言語を使ってCPUの動きを見る。アドレスにloopやらloopendのようなラベルを付けて、番地と紐づけておいて命令で使う。命令は例えば「count(0016番地)の値が0以下ならばloopend(0013番地)に行く」のように書かれる。昔のBASICみたいだね。「1分待機」みたいな命令もあるけどこれ実際はアセンブリでどうやって実装されてるんだろうな。

実際のプログラム言語の説明。プログラムはあいまいさがなく実行できるような形式で記述する必要がある。雨宮さんも触ったことあるって(すごいレベルだと思う)。聞き手として優秀だなあ。

アセンブリ言語は低水準言語、CとかPythonとかは高水準言語。今回はPythonを使うらしい。Pythonはインタプリタ言語。実行するまでエラーがあるかどうかわからないからちょっと恐怖だよね。

Pythonはオランダ人グイド・ヴァンロッサムって人が作ったらしい。オランダ発なんだ。簡単(大事)、インタプリタ、動的型付け、ライブラリが多い(大事)ってことが特徴。

macのPython3.7.0 Shellを使ってる。5 + 4 – 2と書くと7と返ってきた。print(5*4/2)と書くと10.0となった。/2があるから小数になるらしい。print(10/3)は3.33333333333335になる。print(int(10/3))は3、print(10%3)は1になる(余り)。

m = "おはよう"
a= "こんにちは"
import datetime
datetime.datetime.now().hour →12 (12時なのか)
if datetime.datetime.now() hour < 12:
    print m
else
    print a
→"こんにちは"

こんなの作ってた。

第7回

本格的にプログラムを作るらしい。制御構造と計算の手順の話。

制御構造は順次構造、分岐構造と反復構造がある。順次構造はA→B→Cみたいなやつ。当たり前だけどこれがないと確かに進まないね。あとはifとfor。構造化定理:すべての計算手順は全部3つの構造で記述できる(そうなんだ!?)。たしかにこれ以外の構造ないかも。

計算の順序について。3 + 5 * 8は、3+5からか、5*8からか。私たちは5*8からやる。四則演算には優先順位があるから。優先順位が同じなら左から計算する。プログラム言語内でもいろいろ優先順位がある。

分岐構造。pythonなら

t = int(input("最高気温を入力してください:"))
if t >= 25:
    print("夏日です")
else
    print("暑くありません")

みたいな書き方をする。先生pythonのShellつかうのはやい。

反復。whileが例。

a=0
i=1
while i<=10:
    print(str(i) + "を加算")
    a=a+i
    i=i+1
print("計算結果:" + str(a))

のように書く。forなら

a=0
for i in range(1, 11):
    print(str(i) + "を加算")
    a = a + i
print("計算結果:" + str(a))

のように書く。pythonの仕様上、range(1, 11)は1~10の配列を作るといった意味になる。zero based indexなのだろう。range(2, 11, 2) にすると、2,4,6,8,10の配列ができる。3つめの数字がstepを表すということだろう。応用すれば、nまでの和(rangeを1,n-1にする)とか階乗(rangeをn,0,-1にする)を求めることができる。

三角形の面積を求めるプログラム。底辺*高さ/2にすればよくない?input使って入力させてる(コードは略)。float使えば実数になるのね。pythonのfloat型って何バイト型なんだろ?

ヘロンの公式つかう場合。import mathとmath.sqrt関数を使う必要がある。で、三角不等式を満たさないといけないので、if a<b+c and b<c+a and c<a+b で括ってあげてる。まじめだなあ。でも三角不等式満たさないと面積が虚数になったりするから仕方ないか。

FizzBuzzゲーム。3の倍数ならFizzと言う。5の倍数ならBuzzという。15の倍数ならFizzBuzzという。これがプログラム志願者の適性を見分ける問題として知られるらしい。

あ、アレクサ出てきた!アレクサでもできるのか!!!

アレクサと雨宮さんが対決している!!負けた

コード的にはこんな感じ

for i in range(1,101):
    if i%3 == 0:
        print("Fizz")
    elif i%5 == 0:
        print("Buzz")
    elif i%15 == 0:
        print("FizzBuzz")
    else:
        print(i)

これは間違い。15の倍数の時にFizzになってしまう。正しくは15の倍数かどうかを先に判定する。

for i in range(1,101):
    if i%15 == 0:
        print("FizzBuzz")
    elif i%3 == 0:
        print("Fizz")
    elif i%5 == 0:
        print("Buzz")
    else:
        print(i)

私なら上のように書いちゃうけど、面白い別解もある

for i in range(1,101):
    if i%3 == 0:
        print("Fizz", end="") #改行しない
    if i%5 == 0:
        print("Buzz", end="") #改行しない
    if i%3 != 0 and i%5 != 0:
        print("FizzBuzz")
    else:
        print(””) #いらないんじゃね?と思ったけどここは改行のため入れてる

あー言われてみればなるほどだわ。さらに、割り算を使わない別解

n3 = 3
n5 = 5
for i in range(1,101):
    fizz = ""
    buzz = ""
    if i == n3:
        fizz = "Fizz"
        n3 = n3 + 3 #次の3の倍数を指す
    if i == n5:
        buzz = "Buzz"
        n5 = n5 + 5 #次の5の倍数を指す
    if fizz == buzz:
        print(i) #3の倍数でも5の倍数でもないから数字を出力
    else:
        print(fizz + buzz)

これは思いつかないわ!!

第8回

アルゴリズムについて。

いきなりプログラムを書くと失敗するので、まずアルゴリズムを書くのがよいという話。そーだよね。

アルゴリズムの定義。問題の解き方の手順を明確に示したもの。フローチャートみたいなやつでもいいし、表現方法は何でもいいが、あいまいさがないようにすること。

アルゴリズムが充たすべき性質。健全性:正しい答えが出ること。停止性:有限回で終わること。両方を満たすと完全性があるという。絶対これが充たされるとは限らないので、近似的にこれを満たすような近似アルゴリズムという考え方もある。特に統計的な話だと健全性を満たすのは難しいよね。

ユークリッドのアルゴリズム(最古のアルゴリズム)。

aとbが等しくない間、以下を繰り返す
    aがbより大きければ、
        a = a - b
    そうでなければ
        b = b - a
最大公約数としてaの値を表示

36と24の最大公約数なら、a=36, b=24→a=12, b=24→a=12, b=12で12

11と30の最大公約数なら、a=11, b=30→a=11, b=19→a=11, b=8→a=3, b=8→…→a=1, b=1で互いに素

なるほどねー。で、これはなぜ正しいのか!!??

引き算を割り算で置き換えられる。引き算しているのを割り算の余りにすれば次のようになる。

a≧bを仮定する
bが0でない間、以下を繰り返す
    aをbで割った余りを新しいbとする
    元のbを新しいaとする
最大公約数としてaの値を表示する

これでユークリッドの互除法になった。計算は同じ。引き算って割り算の余りなんだな!

アルゴリズムの手間の話。ユークリッドの互除法は数回で済む。n^2とかの話かな?と思ったけど途中で終わった

おかあさんといっしょのアニメが出てきた。正方形の迷路の数え方。1*1なら2通り、2*2で12通り。3*3で182通り。4*4で8512通り(!)。ではどういうアルゴリズムを使えばいいか。二分木を作るとよい。道にA, B, C…と名前を付けて、二分木を作っていく。ところが真面目に二分木を作ると2*2でも8190本の二分木ができてしまうので、いろんな工夫によって37本まで減らすことができる(具体的にどうやるんだ!?)4*4でも2兆。16*16で不可思議とか使っても全然表せない天文学的どころでもない数字になる。これがAIのとこでよく言ってた計算爆発ってやつか。グラフ処理はpythonだとGraphillionというツールでできるらしい。

大根のいちょう切りのアルゴリズム。40片のいちょう型が欲しい。使える操作は輪切り+十字切りのみ。

①輪切り*9+十字*20 →29カット

②十字*2→半円柱の輪切り*9 *2→20カット(①より早い)

②で円柱のままやれば11回だが無理。なので②が妥当。アルゴリズムは、現実的実施可能性も大事になる。

次は金種計算の話。お釣りをどういう紙幣・硬貨で払うか。なるべく硬貨が少なくなるようにしたい。

高額の硬貨から順に支払えるだけの枚数を支払う→枚数最小、過不足もない。これを貪欲法という。問題を分割し、それぞれ最も好ましい解を選ぶ方法。今回は大丈夫だけど、毎回妥当とは限らない。

500で割って余りをとる、100で割って余りをとる、50で割って余りをとる→同じ処理じゃない?そこでpythonではリストを使って、処理をひとまとめにする。[500,100,50,10,5,1]で割って余りをとっていけばいい。

Kinshu = [500,100,50,10,5,1]
kingaku = int(input("金額を入力してください:"))
for k in Kinshu:
    n = int(kingaku/k)
    if n > 0:
        print(str(k) + "円玉×" + str(n))
        kingaku = kingaku - k*n

7行でできた!

逆に財布から小銭を支払う場合は、自分の持っている硬貨の枚数を最大値として保持していないといけない。枚数を配列に保持し、入れ子型の配列にすればいい。KTabke = [[500,1], [100, 2], [50, 3], [10,12], [5,4], [1,10]]みたいに財布の中身を表現すればよし。コードはちょっと長いので略します。要は枚数の最大値まで払うっていうif文を入れるだけでいいんだけれども。

こういう形でアルゴリズムを紹介するってことは、プログラムってのは数学的にはアルゴリズムの写像って考えていいのかな?

第9回

アルゴリズムと能率について。問題を解くときにかかる時間の話をしてくれるらしい。計算量とその評価がメイン。

計算は使う資源が少ないほど効率が良い。資源には時間、空間(メモリ)がある。最大公約数を求めるプログラムをforループで総当たり(2~最小値まで公約数かどうか判定)で実現すると、例えば10179と24360の最大公約数を求めると20356回も割り算をすることになる。ユークリッドの互除法なら6回。ここには大きな差がある。つまりアルゴリズムには良し悪しがある。

どうやって評価するか。時間だけで評価してもいいが環境に左右されてしまう。なので主要な処理が何回行われるかを調べればいい。さっきの話なら前者は2(n-1)回(常に)、後者なら5log10n以下(ラメの定理?より)になる。logが出てくると一気に強くなるね。しかも以下なのでもっと少ないかも。計算量は2のn乗が一番大変で、logが出てくるとすごく小さくなる。

漸近的評価。nが非常に大きい時だけを考えればいいから、主要な項だけ考えればいいし、2もいらない。2(n-1)はnと考えてしまえばいい。2nの2だってコンピュータが発展すればすぐ覆いつくされるので。。と先生は言ったが確かにそのとおりだ。で、これをオーダといってO(n)などと表す。オーダの定義は、カッコの中の値で割ってnを無限大に飛ばせば定数になる、ということ。

さてnの10000000万乗と2のn乗は、2のn乗の方が速い。ここでまた前回のおかあさんといっしょのVTRに飛んだ。高校数学でよくある迷路の問題って、最短経路だから場合の数はたいしたことないけど、最短ではない経路も含めると本当にやばい数が出てくる。数えるのも大変。例えば5*5の迷路は126万通り。6*6は5.7億通り。7*7は7893億通り。8*8。3266兆通り。2のn乗のオーダで増えるとこんなに大変なことになる。

京大の湊先生。アルゴリズムは目に見えないので、目に見えるようにいろんな展示を作る努力をしていらっしゃる。さっきのおかあさんといっしょのビデオも京大のグループで作ったらしい!

年月日から曜日を計算するアルゴリズムについて。西暦1年1月1日以降の任意の年月日を計算する。

普通は1年で1つ曜日がずれるが、閏年は2つずれる。曜日を数字で表し(0が日曜とか)、1年1月1日の曜日に毎年ずれる日数を加えて7で割ればOKじゃない?これを基準日から計算するアルゴリズムという。

これを実現すると、forループが2個できる。1個目は年ごとのずれの判定、2個目が今日を表す月の日数を足していくループ。1個目のループは年nの繰り返し。2個目は最大11回なので定数。計算量はO(n)となる。

ツェラーの公式で計算する。年+閏年のずれ(切り捨て)+月のずれ(切り捨て)+日数を7で割る。月のずれの所がこの公式のすごいとこで、(13m+8)/5で計算すればいいらしい。7で割ると、前の月までの日数を7で割った値と同じになる。上手に調整した感じの数。こういうのを見つけるのが数学マニアってやつですよね。これはオーダがO(1)で計算できてしまう。はやい。

探索処理。ランダムに並んだ15枚のカードから指定した数を選ぶ。普通は前から総当たりで攻めていくしかない。これを線形探索という。最悪n回で平均はn/2回。オーダはO(n)になる。

順番に並んでいるデータを探索する方法。2分探索法が有名。真ん中のデータを調べ、大小を比較してから次に探索する範囲を半分にする。私も、どのソースコードの変更で不具合が起きたか、履歴を総当たりで調べなければならない時によく使う。オーダーはO(log2n)となる。n=100000でも最悪17回で探せる。はやい。雨宮さんは2分探索知ってるみたいだった。

第10回

いろんなアルゴリズム、特にソートについて。辰己先生に戻ってきた。

探索の計算量について。2分探索の計算量はなぜlognになるのか。これは漸化式で求められる。つまりk回の操作でak個の数が判断できるなら、a1=1, ak+1 = 2ak + 1を解けばいいってわけ。これを解くと(中略)ak = 2k-1なので、n = 2k-1とすると、逆算してk = log2(n+1)となる。なるほど!!

先生、放送大学図書館に来た(行ってみたい!)。本の探し方、並べ方について聞きに来た。The art of computer programmingを調べたい。司書の人異様にタイピングとPC操作速い。番号が出たのですぐ見つかった。もし本がばらばらに並んでいたら、全探索するしかない(詰む)。

ソートとは。ある関係に従ってデータを並べる作業のこと。「ある関係」は任意のものである。整列されているデータ、されていないデータで大きく使い勝手が異なる。コンピュータは大小関係しか判断できない(これがコンピュータの頭悪い所だと思う)ので、大小関係を何度も判定して全体を並べるアルゴリズムが必要になる。

まずバブルソートから。隣り合う2枚を総当たりで全部比較する方法。一度全部比較したら最大値だけ取り除いてやり直し。計算量はO(n2)で、まあまあでかいオーダ。実務でもC++だとコード書くのが面倒なときに使ったことがある。

選択ソート。まず左端の値を決めたいから、最小値を選んで一番左に置く。次に最小から2番目の値を選ぶ。。。と繰り返すが実質バブルソートと同じで、オーダもO(n2)。

挿入ソート。整列済みの配列に挿入していく。まず1枚の場合は何もしなくていい。2枚目は前か後ろにつける。3枚目は適切な位置に挿入する。。。を繰り返す。手間がかかる場合(降順に並んでたら大変)とかからない場合(最初から整列済みならなにもしない)がある。オーダは最小O(n)~最大O(n2)。

マージソート。整列されてないリストを2つに分割してから、整列して、マージ。これどういうメリットがあるんだ?分割は再帰的にできるので、まず全体を全部2つずつに分割。それぞれ大小比較して整列する。次にマージして4つにする。8つにする。以下繰り返し。人間がやると大変だが、計算量はnlognになるのでだいぶ小さい。なぜnlognになるかというと、やはり漸化式(証明はちょっと長いので略)。

最後にクイックソート。リストにおいてある値を軸として分割を繰り返して整列させる(!??)。なんのこっちゃ。

とりあえず1つ軸を選ぶ。1~15のカードで8を軸とする。次に8より小さいシリーズ、大きいシリーズに分ける。小さいシリーズの中でまた軸を決め、大小に振り分ける。振り分けたとこのサイズが1~2だったらそこで大小比較して、軸の左と右に置く。これで軸を含む要素がソートされた。で、しかもソート済みの要素はこれ以上マージする必要もなく結合するだけでいいから、結構はやい。計算量は印刷教材を見よだって。いったいいくつなんだ。

n2とnlognの計算量はどのくらい違うか。n=10で後者は1/3の計算量で済む。n=100だとどのくらいなの?

組み合わせ爆発の話。正方形の迷路の道順を真面目にスパコンで計算すると9*9は6年半、11*11は290億年かかるらしい。雨宮さんによるとこの間の話が面白いらしい。で、動画に戻る。なかなか強烈な動画なので皆さんにも見てほしい。っていうかこの動画、科学技術館のやつだし雨宮さんのチームが作ったんじゃ、、

オチが。。。悲しいです。。。

最後に無限の猿定理の話。サルが適当にキーボードをたたくと偶然シェークスピアの小説が出てくるかもしれない?か?実際計算した人もいるらしい。これも組み合わせ爆発の話で、2-3文字なら簡単に出てくるが、数十文字になると無理になってきて、結局、シェークスピアの小説のごく一部分が出てくるだけでも数百億年以上かかるらしい。公開鍵暗号もいっしょ。適当な数字を並べていけばいつかは当たるが、まず当たらない。

第11回

集合と確率の話。

外延的な記法と内包的な記法について。列挙するのが外延的 {1,3,5}とか、定義を書くのが内包的 {x|x≧1}とか。

集合が同じとは、ある要素がすべて別の集合の要素である、逆も成り立つ、ということをいう。大学受験でたまに使う論証だ。なお、この定義だと同じ要素が複数入ってることは考慮されない。

命題の真偽で定義する積集合と和集合の話。ベン図で書ける奴やつ。補集合と全体集合も出てきた。補集合を考えるためには、必ず全体集合が何なのかを考えなければいけない。

中国人剰余定理。「aとbの最大公約数が1のとき、ax+by=1を満たす整数x,yが必ず存在する」

例えば11x – 7y = 1→x=2, y=3。21x-7y=1→解なし。じゃあこれを一般的にどうやって説明するか。

a=11, b=7とすると、11k-1を7で割った余りは、k=0,1,2,3,4,5,6に対して6,3,0,4,1,5,2となる(重ならない)。これはどのような互いに素なaとbについても成り立つ(余りが等しいと仮定すると、引き算した時bで割り切れてしまうから、矛盾を導ける)。つまり全体として集合が一致している。で、必ず余りが0になるところがあるから解があるという論理の流れになるらしい。

フェルマーの小定理。「pを素数とする。aがpで割り切れないとき、ap-1はpで割り切れる」

実例。a=2, p=13として、2の12乗は4096で、(4096-1) / 13 = 315余り0となる。適当な数字が素数かどうか判定できるテストの第1段階として使える。

証明の概略。途中までは中国人剰余定理と同じで、pで割った余りの集合が1~pになるねって話。そのあとが難しい(略、印刷教材見よ)。二人ともほ~そうなんだ~って感じでスイスイ進んでいくけど私全然わかんないです。大事なのは集合が使われているって話です。

この定理、どこで役に立つか。公開鍵暗号でこの定理がないと先に進めない。ので暗号で役に立つ(以前私も証明に使いました)。

確率の定義。「その自称がまだ起こっていない状態で、起こりえる可能性があるかを数値的に表現したもの」。確かに起こってない!!打率みたいにすでに起きたことは「記述統計」という。確率とは違う。

事象→起こっているか起こっていないかをはっきりと判定できること(確かにはっきり判定できないとダメだ!)

確率変数→とりうる値の集合(確かに!?)

5回に1回傘を忘れるAさんがA, B, Cの教室で授業を受け、傘を忘れた。それぞれの教室に忘れた確率を求めよ。

考え方の例:125本傘を持ってきたと仮定→Aに25本忘れる、Bに20本忘れる、Cに16本忘れる。忘れた本数は61本だから25/61, 20/61, 16/61。これは思いつかないっす。。いきなり難しい例です。

さらに難しい例。モンティ・ホール問題。宝物を当てるゲーム。3つの箱から宝物を選ぶ確率で、どういう戦略をとるのが賢いか考える話。ちょっと言葉で説明するのが難しいのでこれも印刷教材見よう。

モンテカルロ法。あーこれ昨日アルゴリズムとプログラミングの講義でやったやつや。この授業では視覚的にやってる。米を円を書いた紙の上に均等にばらけさせてから、円周の中と外の米粒の数を数えることで円周率を計算するってわけ。143個と491個になった。合計634個で、理論的には全体と円の面積の比が1 : π/4だから、π = 4 * 491 / 634となるはず。3.0977なのでまあまあいい値になった!!

単純な計算方法が見つかってない場合はいまでもモンテカルロ法を使ってる。囲碁のAIとか(そうなの!!??)。ランダムに試合をすると勝つ・負けるが確定するから、勝つように学習を重ねていけばいい。1秒で1局できれば1日で何十万局もできるじゃんってわけ。なんかわくわくしてきたぞ。音楽とか絵とかはどうすればいいんだ?→人間が評価していくしかないって話になった。でも、一定の評価方法が確立していれば音楽でもできるのでは。。?これは研究に使えそうな気がするぞ。論文いっぱいできてるだろうし調べてみよう!

第12回

高岡先生だ!データと計算量について。特に量についての話になるらしい。

情報とは何か。シャノンの情報理論だ。はい-いいえの質問に答えると1ビット使う。8個の選択をするためには3ビット。2のn乗をの選択肢の中から1つの情報を伝えるにはnビット必要。ただし、全部等確率という仮定が必要。じゃあ等確率でない場合も考えないといけない。

ある事象が起こる確率をP(X)、情報量をH(X)とすれば、H(X) = log21/p(X) = -log2P(X)と定義できる。例えば確率1/8ならH(X) = 3ビットになる。つまり確率が低ければ情報量が大きくなる。確率が低ければ受け取った価値が大きいということになる。例えば宝くじが当たることを誰かが教えてくれれば、その情報は価値が高い。

情報源の話。なんか歯ブラシいっぱい出てきた。4つ+4つの歯ブラシと、8本異なる歯ブラシ。平均情報量は、個々の情報量*確率を足したものと定義できる。前者は確率1/2で4本ずつなので、1ビット*1/2 が2種類、足して1ビット。後者は3ビット*1/8 * 8 = 3ビット。まあ確率が全部同じだからそうか。平均情報量(≒情報エントロピー?)は、ネットワークの通信速度などで使われるらしい。エントロピーが高い→知らないことが多い、エントロピーが低い→知っていることが多い、ということ。情報の圧縮(エントロピーが低いと圧縮しやすいのかな)とかAIとかでも使うらしい。

東大の豊田先生の研究室へ。ドラレコのデータをビックデータにして研究してる。事故が起きた場所と運転状況を掛け合わせる(かける!?)といろんなことが見えてくるらしい。事故が起きる場所はパターンがあり、まだ起こっていないとしても、事故が起きやすい場所もわかってくる。すると事故の起きにくい場所をナビするということができる。

次の話。道の凸凹をスキャンするシステムを作った。業務用車両にセンサーを付けてもらって情報をとってきたらしい。地図で可視化すると道の状態が悪いところがよくわかるので、自治体がどこを優先に直していいかがわかる。経時的情報もあるから、道の補修履歴もわかる。ズームするだけで詳細な情報が出てくるからめっちゃわかりやすい。すげ。

次も東大の生駒先生の気象データについての話。いろんな気象データを統合するためのシステムを開発してるらしい。理系らしい、めっちゃ見づらいスライドや。しかも速い。とりあえず気象データが発展して詳細になったことがわかった。DIASというシステムで基本的なデータベースやネットワークを提供し、使いたい人がアプリを作ってDIASにアクセスしてデータを持ってくる基盤を作った、ということもわかった。基盤作るのって大変だよね。だれでも使えるような仕様策定がめっちゃ大変そうだし障害も頻繁に起きそう。

雨宮さんが突然01100011みたいな暗号を出した。それから暗号解読表も出してきた。ところが解放が一意に安定しないという欠点が見つかった。これを一意復号ではないというそうだ。また、順次に復号できていって、最初からやり直しにならないことが保障されていることを瞬時復号というらしい。しかし高岡先生って感情表現が極端に苦手な感じがする。本当は気持ちが大きく動いていると思うのだけれども。瞬時復号を満たすための必要十分条件ってなんだろね。二分木が完璧に作れることなんだろうけど、数学的にはどうなんだろ?

平均符号長とエントロピーについて。平均符号長はエントロピー以下になることはない(情報源符号化定理)。例えばA B C D を 11 10 01 00 で表すとすると符号長は2ビット、確率1/4で等確率。平均符号長は2ビット。エントロピーは2ビット * 1/4 * = 2ビット。直感的には、確率がばらけると平均符号長はかわらないがエントロピーが増える気がする。講義でも確率がばらける場合を計算してるけど平均符号長=エントロピーになった。エントロピーに平均符号長を近づけていくと効率が良くなる→エントロピーまでは圧縮できる!ってことらしい。

17歳男子の身長分布。きれいな正規分布になってる。最頻値、平均値、中央値が大体同じ。標準偏差をsとすると、-s~sの間にだいたい68%が来る。2sなら95%。17歳男子のデータを見る-s~sの間に73%、2sの間に96%。やはりほぼ正規分布である。体重は正規分布に従ってない。左に山が偏っていて、最頻値60、中央値61、平均値62.6kg。3つの値がずれていない=ほぼ正規分布であるということになるらしい。

第13回

今日から最後まで立教の村上先生。一階述語論理について。日常言語を論理言語に翻訳する所がメインらしい。

文と命題の違いについて。命題とは真偽が一義に決まる文のこと。文はそうでもない。「この問題は難しい」、とか、「それをとってください」とか。

で、科学的命題とは、真偽が実験・観察等の統計的な確かさにより決まる文のことを言う(えっ、100%じゃないのを命題って言っていいんだ!?)。例えばカラスは黒いということは、白いカラスは無視する。統計的に高い確率で成立すればいいや、ということ。これに対して演繹的命題は、真偽が100%はっきりしている命題のこと。例えば、一次方程式ax+b=0には解がある、という命題について。

「この一次方程式ax+b=0には解がある」→aとbが不明だから命題ではない

「一次方程式ax+b=0(a=0、b≠0)には解がある」→偽→命題である

「一次方程式ax+b=0には解がある」→偽→命題である ※最初に「すべてに」を補わないといけない。暗黙の量化という。あっこれ慶應の論理学でやったやつや。

全称量化→∀のこと。「すべての」と表現する。

存在量化→∃のこと。「ある」と表現する。

この授業では記号を使ってないのでわかりづらい。

量化の例。Everybody loves somebody. は①「誰もに好きな人がいる(全員が誰でもいい誰かのことが好き)」②「誰もが好きな人がいる(特定の1人のことを全員が好き、本人含む)」の2通りに取れる。①は∀∃、②は∃∀と表現すればよい。

じゃあこれを否定するには?「誰もに好きな人がいるわけではない(ある人が存在して誰も好きでない人がいる)」¬∀∃「誰もが好きな人がいるというわけではない(すべての人に好かれている人は存在しない)」¬∃∀

「すべてAだ」「Aでないものがない」は同じ意味。

「あるものはAではない」と「Aでないものがある」は同じ意味。

雨宮さん、ついていけてるけど正直ぜんぜんいみわからん。記号で表現してください。たのんます。

空虚な真について。そもそも対象がない場合は反例を作れないから絶対に真になる。否定が不可能=真である命題を空虚な真という。これってあれか?反出生じゃん。「まだ存在していないわが子がかわいそう」みたいなやつ。これぞ空虚な真。真だけど意味がない。つまり論理的真であることは真実を意味しないかもしれない。

「ならば」について。Aが偽か、Bが真なとき。前者は直感に反する。前者は反例を作ることができないからって理屈。前提が間違っているときは必ず「ならば」が成り立ってしまうというのは、皮肉な感じがする(慶應の論理学でも思った)。それにしてもこの授業は早すぎていみわからん。駆け足すぎる。AならばB、の場合は包含関係が成り立たないといけない(B⊂A)。ベン図のよくある重なってる奴だと絶対成り立たない(反例があるから)。

ってか記号使ってくれよ!意地でも使ってないけど印刷教材では使ってるんだろうか?

カードゲームで論理の話をしている。ちょっとわかんないです。どうも対偶の話をしているような気がする。対偶を調べれば勝てるみたいな感じ?あっやっぱそうか。

条件文と同値文の違い。日常言語だと「ならば」を同値文の意味として扱うことがある(ここはスライド作ってください!)例えば「雨が降っていたから動物園に行かなかった」は同値の例。逆が真だから。あれそうか?雨が降ってなくても動物園に行かないかもしれないじゃない?

演繹的推論について。0個以上の推論を使って結論を導くこと。妥当な推論とは、すべての前提が(内容にかかわらず)真なら結論が真になる推論のこと。まともな推論(?)とは、前提が実際にすべて真であるような妥当な推論のこと。

結論だけの妥当な推論はあり得るか?例えば1=1かな?

妥当な推論は空虚な真も含まれてしまうので、中途半端な感じだそうだ。

妥当な推論の例。三段論法。クジラは哺乳類である、哺乳類は温血動物である→だからクジラは温血動物である。集合の包含関係が成り立つから必ず成り立つ。

妥当でない例。たまたま前提も結論も真のケース。例えば、クジラはサメではない、クジラは哺乳類である→だから、サメは哺乳類ではない(サメをイルカに変えるとおかしさが分かると考えた)

前提がすべて真だが結論は偽のケース。ハトはスズメではない、ハトは鳥である→だから、スズメは鳥ではない(上のイルカの例と同じ)。だからこの推論はおかしい、妥当ではない。

妥当であるかどうか調べる方法。同じパターンの推論で、前提が真なのに結論が偽になるシナリオ(=反例)が存在するかどうかを調べる。とにかく反例を考えなければいけない。たいへんや。なので、これを自動化したい気持ちがある。すると一階述語論理が出てくるらしい。で、それを実装したのがコンピュータってわけ。と考えると面白くなってくるね。

第14回

タブローによる計算の話。タブローって慶應通信の論理学でもちょっと出てたあれだ。

妥当性の検証を自動的に行うのがタブロー法らしい。

言語とは何か。共通している文法があるものが言語?シグナルの部分と意味の部分を分けるのが言語学らしい。記号列→文法に従って構成されている単位→統語論の世界。記号列を解釈して結びつけること→意味論の世界。例えば(シグナル)赤信号が青になった→(意味)前進してもよい。(シグナル)イルカが音を出す→(意味)意味あるかもしれんけどわからない。などなど。

人工言語の話。人工言語は意味はもとより統語論は得意。意味は私たちが決めればいい(?)。これから語彙と文法と操作規則を定義する。

述語記号P, Q, R、関数記号f, g, h、変数記号x,y,z, 定数記号a, b, c、等号=、論理演算記号∧、∨、¬、⇒、⇔、量化記号∃、∀を使う。いわゆる記号論理学のやつだ。

項。変数や定数、これらを関数に入れたやつは項。例えばf(x), f(g(x,f(z)))など。(≧∀≦)は項ではない。gzもだめ(関数の定義にあってないから!?)。

文。項を統合でつないだやつ t=s は原子文である。Pが述語記号ならP(t1, t2, …)も原子文。これを演算子でつないだやつが文。つまり∧、∨、¬、⇒、⇔でつないだり、前に∃、∀を付けたやつが文。もう文は無限個あるね。

等号=→項と項を結ぶ。同値記号⇔は文と文を結ぶ。f(x) = g(w, y)は文だが、f(x)⇔g(w, y)は文ではない(文法的ではない)。

量化記号の復習。だれもに好きな人がいる→∀x∃yAxy、だれもが好きな人がいる→∃x∀yAxyと書ける(x, yは人を表す変数として、Aはなんだろう?→好き、というかんけいのことだとわかった)

代入すること。同じ変更が「自由に」表れているとき、同じ記号で置き換えられる。先の例なら、∀x∃yAxy→∃yAay、Aabって感じ(!?いみわかりません)。

「自由に」ってなんだよ?→複雑なのででテキストをお読みくださいだって。あんまり詰め込まないでほしいぜ!

意味論の話。一つの個体に対して牛若丸=義経(原子文)みたいに複数の名前がついていることがある。これは統語論の話。あれ?この話どう関連してるかわからない。とりあえず対象の集合を領域にするってくらいの意味らしい。次は、付置関数。約束の話。弟はだれ、妹は誰、みたいなこと。

例。兄弟の定義を記号でやる。R→兄弟である。f→父、g→母なら Rxy⇔∃z(f(x)=z∧f(y)=z) となる。真面目に言葉で解釈すると「xとyが兄弟であるとは、xの父がzでかつyの父がzであるようなzが存在することと同値」ということになる。まあ確かにそうだ。

頼朝と義経の関係を記号で表している。雨宮さん、歴史の教科書これで表してくださいよって言ってる(やめてほしい)。実際やってる奴がいるらしい。

タブロー法。これは反例があるかどうか自動的に検証する方法らしい。偽であると仮定して文を分解→矛盾が発生したシナリオを却下→以下繰り返し→却下されないシナリオがあれば判例になる、ということらしい。

スズメ、ハト、鳥の例でタブロー法を実演してる。ちょっとwordpressでは書けないので、テキストを参照するしかない。雨宮さん、よくついてけるなこれ!

全体的にいえば、間違った三段論法を機械的に判定できるということ。中身を全く考えなくていいのがすごいけど、案外、直感的にわかるかもしれん。反例を構造的に頭の中で考えられたら最高だけどそれは、タブロー法を全部頭の中でこなした上で、直感レベルまで訓練を続けないと無理だね。将来的にはそういう教材を作成してもいいかもしれん。

ここまでやったら論理的な話、数学的な話は全部コンピュータができるんじゃね?と思われたが、無理らしい。なぜ無理か。それを次回やるそうです。

第15回

証明と計算について。まず自然数と帰納法の話。

文通クラブのパズルについて。4つの条件からメンバーが何人かを推理する。

  • ①どのメンバーも少なくとも1人に手紙を送っている
  • ②自分宛てに手紙を送らない
  • ③どのメンバーも多くても1人からしか手紙をもらっていない
  • ④誰からも手紙をもらっていないメンバーが1人だけいる

④から始めるとわかるが、これは無限になる。

①→一人にだけ手紙を送った、に変更するとどうなるか。やっぱり④から始めると無限になってしまう。一人から次の人次の人…と手紙が受け渡されるので、直線的な関係になる。→自然数の公理と同じらしい(!?)

というわけで自然数は関数S(次の数に進む)を使って表すことができる。

  • ①0が存在する
  • ②Sx=SyならX=y
  • ③xが0でなければ、x=Syとなるyが存在する
  • ④すべてのxについて、Sx=xでない
  • ⑤Sx=0となるxは存在しない

どれも手紙ゲームのルールと同じ(言われてみれば)。

さて、前述の手紙ゲームで、命題A「どの手紙についても手紙を書いた人の髪が青ければ、受け取った人の髪も青い」という条件を追加すると、全員の髪は青くなるか?これは、青くなる。最初の人④に当たる人が青ければ全員青いのだけど、最初の人は青いかどうかわからない。でも青い。なぜかというと、命題Aを否定するには、前半が真かつ後半が偽にならないといけないが、そのような場合はない(全員青いから)。というわけで反例が作れず、全員青い。ここ理解するのめっちゃ時間かかったんだけど雨宮さん2秒でわかってる。すげーなー。

これは数学的帰納法という手法でした。わかりやすいですね。高校との違いは、一直線の論証だけじゃなくて、分岐しても大丈夫ってこと。

帰納法の誤りを指摘する問題。どんな馬の集合でもの馬が1色であることを証明するために、次の帰納法を使おうとした。

  • ①1頭なら1色(自明)
  • ②どんなn頭の集合をとってきても1色と仮定
  • ③n+1頭にしても、任意のn頭は1色なのだから、n+1頭でも1色
  • ①~③より、どんな馬の集合でも馬は1色

一見すると正しそうだが、結論がどう考えてもおかしい。ということはどこかに穴があり、これは③がおかしい。n+1頭目が別の色なら1色にならない(反例)。よってこの帰納法は間違っている。一々難しいな。こういう論証の誤りを一瞬でつけるようになりたいよ。

集合の濃度について。無限集合は部分集合と全体集合の濃度が同じになることがあり、これを「濃度が等しい」という。例えば自然数には濃度がある。自然数は元を数えることができるという特徴があり、これを可算、ℵ0という。ℵはヘブライ文字でアレフと読む。

濃度が変わらないというのは、1対1対応があること(?)。自然数に何か有限個のものを加えても、tanという関数を区間[-π/2, π/2]の間で考えても、1対1関係があるから、幅を大きくしたり小さくしても実数と濃度は同じ。

有理数の濃度は?有理数は分数で表せる、すなわち自然数と自然数の組だから数えられる(可算)。また、有利集の集合は自然数の集合を部分集合としている一方で、この集合の部分集合とみなされるから加算(「この」が何を指しているかわからず意味わからんかった)。

実数Rはどうか?これは加算でないことが証明できる。まず実数の濃度は有限区間[0, 1]実数の濃度と同じである。次は背理法。[0,1]の実数が全部数え上げらえると仮定する。すると、0.a1a2a3a4…というすべてを網羅するリストができることになるはず。ところが、リストに入ってない数を作ることができてしまう。例えば、数え上げたリストを斜めに取っていって各桁を+1した無限小数を考える。するとこの小数はリストにない。なぜかというと、これはi番目に入っているはずだが、i番目にある無限小数のi桁目は+1されていて、リストのi番目のと違う。だから矛盾する。よって実数は可算ではない。以上。対角線論法というらしい。

正直全然わからん論証なので、おとなしく印刷教材を真面目に読みます。

同様の理由で無理数も可算ではない。そして無限も無限にあるらしい(!?)。集合論をまともに勉強しないと意味わからんです。

なぜこんな七めんどくさい表現をするのかというと、みんな同じ数を使っているんだ!っていう前提をはっきりさせておかないと、議論ができないからなんだね。数学、機械のためのルールを一意にしないと、すべてが曖昧でめちゃめちゃになってしまう。数学はこういうことをはっきりさせているからとても好きです。

放送大学全科目感想 007 自然言語処理 (’19)

  • 情報コース
  • ラジオ授業
  • 黒橋禎夫先生(京都大学教授)
  • 難易度 ★★★☆☆
  • おすすめ度 ★★★★★

コンピュータを使った自然言語処理で、今できることと挑戦の始まっている分野は何なのかを学ぶ。特に「今できること」については、どのようにその技術が成り立っているか概観だけではなく仕組みを詳細に解説してくれる。アルゴリズムのトレースもある。そのため回によっては慣れていないとやや難解な箇所もあるが、見返りも大きい。終盤は専門家や学者さんへのインタビューもあり、研究者の肌感覚もわかる。素晴らしい講義でした。

※本講義の印刷教材「自然言語処理」は、自然言語処理の入門書として定評があります。

第1回

自然言語処理の概要とその困難さ、それから歴史について。アシスタントが先生の下で学んでいると思われる現役学生さんなので好感が持てる。

自然言語とは恣意的なもので、語の指す対象と語の間に何ら必然税がないのが特徴。誰かがそう呼んだってのを一般化したものだものね。あと日本語の数詞みたいに、慣習で決まってて法則性がないものも多い。そういうのはコーパスと計算機の発展による力技で何とかなってきている段階らしい。

自然言語処理の歴史はAIとほぼ一緒で、コンピュータの発展とともに予算が増えたり減ったりしている。AIのターニングポイントがgoogleのAlphaGo(2015-2016)だったのに対して、自然言語の方はIBMのWatsonがクイズ選手権で優勝した時(2011)。WatsonはAIの歴史でもかなり大事な役割だった。いずれも計算機の発展の勝利って感じ。

第2回

文字コードと文字列探索の話。かなり基本的なところから話を始めてくれるんですね。助かります。

UnicodeのUTF-8の仕組みが分かった。マルチバイトだったのか。今まで知らんかった。

文字列探索は音声だけではぜーんぜんわからん。トライ法を説明されたけど図がないと無理です。木構造作っとけば計算量が少なくて楽だってことは感覚的にはわかるけどさー。印刷教材が届いたら、一々トレースしてるっぽいから手を動かしたり、考えながら読んでみるとよいと思う。

第3回

形態素解析とビタビアルゴリズム、未知語について。特に形態素解析が中心。

日本語は分かち書きがないから品詞分解が大変という話。英語はそういう心配なくていいよね。簡単な単語だと同音異義語(同音別品詞?)が多いとはいえ文法上有限個の組み合わせだから楽勝な気がする。日本語はかなりフリーダムだよなあ。

スコアをつけて最短スコアを導き出してく仕組みのとこは、ソフトウェア開発と全く同じ思想なので楽しい。いかにして問題を解決していくか、そこがアルゴリズムを考える醍醐味だよね。昔、東京メトロの運賃自動計算プログラム作ったときのことを思い出す。最近は機械学習でスコアをつけられるから、楽になったよね。

未知語はスコアを高くするってのも工夫の賜物だなー。ありえる組み合わせか、ありえない組み合わせかの判定のとこも面白い。ラティス構造のとこは想像力が及ばなかったから、印刷教材が来たらよく復習しておこう。

第4回

コーパスの話。コーパスが登場する前は学者が直感でスコアとか構造を与えるしかなかったが、コーパスの登場で語の出現確率や構文の適用がやりやすくなった。意味解析を含んだコーパスは活用方法によっては強い武器になりそう。確率のマルコフモデルは叩き込んでおかないとダメだな。

意味解析を含んだデータ集合という構想は自分にもあって、卒論で音楽について何かデータ的解析をやってみたいのだけど、音楽の解析ってやっぱコード進行とか、BPMとか楽器の情報とかなのかな。できれば自動でなんでも解析できるとよいのだがそうは問屋が卸さないだろう。

第5回

第4回の話の英語版。英語は品詞の決定が難しいことをtime flies like an arrowという文を例にして説明してた。機械が自然に考えるとtime filesを名詞+動詞とみるか、複合名詞とみるかで迷ってバグる。文法的にはどちらも正しい。そこで機械学習の出番となる。time fliesという組み合わせがあり得るかあり得ないか、周りの単語の登場回数や順序などを参考にして、隠れマルコフモデル、ビタビアルゴリズムなどを駆使してスコアを出していく。

コーパスに必須の情報としてタグ付けがある。意味解析したデータ集合を作る際、適切なタグ付けと、そもそもの適切なタグの定義が難しそうだ。未知の合成語を見つけた時、先頭にくるもの、来ないもの、他の単語の後ろに来るもの、単に不適切なもの(洒落でやるよね)などを全部分けないといけない。このタグ付けの作業が、コーパスを作るにあたって膨大なコストとなることが予想される。

一次元構造を持つのは文章も音楽も一緒なので、音楽解析のためにはデータにタグ付けをしないといけないが、それを音楽理論をベースにするのか、全く新しい概念をベースにするのかでいろいろ研究結果が変わってくる。自然言語と音楽は非常に類似しているので、この講義は全部マスターしていきたい。

第6回

語の意味解析について。シソーラスを使った共起語による分析の話が多かった。共起語とは、ある語と一緒に使われることが多い語のこと。多義語の意味が1つに確定しないときは、共起する語を手掛かりにして意味を確定すればいい。これは漢字でだいたい意味の確定する日本語よりも英語の方でおきやすい問題といえる。例えばbankという単語は「土手」「銀行」の意味があるが、お金の話題と一緒なら銀行、川とか道路とかと一緒なら土手と解釈すればいい。

多義語が1対nの関係だとすると同義語はn対1の関係のこと。ある語の言いかえ、例えば「うまい」と「おいしい」は同義語といえる。微妙なニュアンスの違いは当然排除できないがまだ機械がそのレベルに達してないらしい。

共起ってのは要するに相関関係の問題だと思う。講義を聴きながらどれも音楽に関連させるんだけど、あるコードが他のコードと一緒に出現する確率が高ければそれが共起といえるはず。同義語は転調した場合の相対的なⅠとかⅦとかの関係かなぁ。違う気もする。

あと意味を解釈したとしてそれをどうやって自然言語処理に応用していくんだろう?意味が分かるというのは、辞書の1,2,3番のどの意味に該当するかということだと思うのだけど、これがわかっても表面上の文字に何も影響ないじゃん?ちょっとわからなかった。

第7回

構文、語の結びつきの関係について。一次元の文を平面や立体にしているのは語の結びつきによるもの。

文脈自由文法とCKY法という基本的な手段の解説がされたが、前者は文が木構造に分解できるということ、後者は解析結果を保存しながら探索することでオーダーがn^3まで減らせること、以上のことはわからなかった。図が必要。なんでラジオ授業にしたし。

構文を考えてるのって言語学者の直観によるらしいが、構文そのものもコーパスを使ってDLで抽出できるらしい。たとえば和音構造をDLで学習させたら、よくある旋法や、特定のアーティストの好む旋法が解析できるのでは?特徴抽出は機械の得意なところなはず。何の構造を抽出していくか、何を得たいか、は今後検討の余地あり。

第8回

構文解析2回目。依存構造解析をnon-projective(係り受けが交差してもいい場合)、projective(交差しない場合)に分けて説明する。依存構造解析とは、単語・文節単位で係り受けの矢印をつないでいく構造のこと。係り受けの交差とは、1.これが 2.僕は 3.正しいと 4.思う という文の場合、1→3、2→4のように意味の矢印をつなぐと矢印が重なってしまうこと。日本語も英語も交差はほとんど発生しないので、例外的な扱いとなる。両言語とも、解析はprojectiveなものが主流で、精度は90%くらいだそう。

projectiveな依存構造解析は複雑でラジオ講義では何を言っているかほとんど不明だった。ざっくりと、矢印にスコアを割り当てていって(コーパスを参考にするのかな?)スコアが最大になる構造を選択するということ。矢印なのでループができてしまうことがあるが、ループは一つのノードとして扱いスコアを算出する。ループを含む構造はたいていスコアが低くなるし、最終的にループを含まない構造を選べばよいということ。処理の単純化のためかな。

projectiveな構造解析の計算オーダーはCKY法と同じくnの3乗。実務でも3乗ならぎりぎり実用範囲という感覚があるし、だいぶ工夫が上手なんだなと思う。

第9回

意味解析2回目。格(主格とか目的格とか)を確定する話がメイン。英語は文法上格が確定しやすい(ドイツ語なんかもっと分かりやすそう)のであんまり問題にならないが、日本語は大いに問題となる。大規模コーパスに格を付与した格フレーム構築のための技術と、その利用について解説していたが、なかなか難しく、印刷教材での復習が必須だ。

ひとつ衝撃だったのは「格にあいまいさがある文は捨てる」というところ。あいまいさがある場合は教師データとして採用しないというのだ。そうすることで、核となる規則を頑健に抽出できる一方で、あいまいさがある文を例外として扱うことができるのかな。

第10回

(今回は聞きながら書いてます)

どんどんマクロな解析になっていき、今日は文脈の解析。文脈解析とは、代名詞(照応関係)、省略、文の間の関係の処理をすること。

照応関係とは代名詞を含め、ある語の指し示す対象が他の文にも出現していること。なお、出現していないこともある(外部照応。「みなさん」とか)。コーパスで照応関係を機械学習しても6割くらいの精度にしかならないらしい。照応関係「しやすい」くらいのことしかわからないようだ。

「太郎はのどが渇いた。水を飲んだ」のように「彼は」とか「太郎は」が省略されることは日本語ではよくある。こういうのを補うことをゼロ照応解析という。格フレーム知識があると、欠けているものがわかるから少しは解析ができる。でもせいぜい50%しかわからない(50%でも高いように思える)。

文章の一貫性について。RSTという手法では、文章を談話という単位に分けて主従とか根拠とか背景とかの関係をつける。重要度に優劣をつけるらしい。一番重要な談話を核と呼ぶ。核だけ選べば要約になるというわけ。人によって解釈が異なるから、コーパスを作るのが難しい(そりゃーそうだ)。注釈付与前に「だから」「しかし」などのディスコースマーカーをつけておいて、あらかじめ談話関係を明確にしておく手法もある(でもどのディスコースマーカーをつけるかにおいて技術の優劣が付くんじゃね)。

第11回

情報抽出と知識獲得について。今回は構造の話ではなく、統計の話になった。

ある語(特に、固有名)に着目して、関連する情報をくっつけていくやり方、特定のイベントに着目して、類似の表現を獲得していくやり方、事態の間の関係をスクリプトとして記録していくやり方、どれも、ビッグデータを前提として、大規模な機械学習をおこなっていくことで、外延を少しずつ獲得していこうという試みのようだ。ビッグデータとしては、wikipediaが好まれることが多い。

知識獲得については他の授業でもフォローがされているから詳しく学ぶとして、wikipediaのような文章集合からの知識獲得って、世の中のみなさんの知的活動に敬意を払った手法だよなあって思う。哲人による直観とは正反対の方法で、みなさんの知的活動のいわば平均をとるわけじゃん。理想的には、平均中の平均の思考ができるようになればいいわけだし、民主的な知識ができるわけだよなあ。昔想像されてた「コンピュータだから間違いはない」みたいなロボット像とはだいぶ変わってきたよね。

第12回

情報検索、主にgoogleのページランク算出法について。慶應の図書館情報学でやったのと同じやった。ページランクの高いサイトからのリンクに高い点数をつけてランク高くするってやつ。あれって最初の点数(一番ランクの高いサイト)は1とかにしておくのかな。

googleのクローラーって、サイトをそのまんま保存しておくのはコスト高すぎだから、インデックスつけてそこだけ保存するんだろうけど、そういうコストの削減方法についてはどういうアルゴリズムを採用しているのか気になる。↓の本とか読んだら書いてあるんかな。

途中から乾先生へのインタビュー。

Tohoku NLP Lab / 東北大学 乾研究室

乾先生はtwitterの分析や、災害時の情報収集に自然言語処理を応用しているそう。自然言語の基礎研究の方も相当進んでいて、もう少しで常識とか背景知識の推測とかの段階まで行けそうらしい。計算量も多く相当なコンピュータが必要になるだろうが、人間って高速演算なんか必要なく楽勝でできちゃってるからすごいよね。

第13回

対話処理について。siriとかしゃべってコンシェルとか。うちではアレクサが大活躍しているけど、収録時期が古いのかアレクサは話題になってなかった。しゃべってコンシェルも今ではマイナーな気がする。

対話で難しいのは、人間が決まりきった形という意味で正確に質問に答えないことがあること。「日曜に遊ばないか」「月曜に試験がある」という会話は、暗黙のうちに提案を断っているのだけど、コンピュータが認識するのが難しい。

webやtwitterなどアクセスできる資源は膨大にあるけど、それでも会話ってのは難しい。人間が会話のパターンや構造を認識して、会話にラベル付けをしていかないと学習すらできない。勝手に賢くなるシステムってのはまだまだ不可能なんだな。

終盤はしゃべってコンシェルの開発者さんへのインタビュー。口調はtwitterから「女性の語尾の顕著な特徴を学習」するなどして実装しているらしい。応答速度は、よくある質問をテンプレにして高速化を図っているらしい。プログラムってジェネラルになるほど動作遅くなるから、スペシフィックにして高速化っていう発想はここでも汎用性があるんだなーと思った。

第14回

機械翻訳について。まずは異言語間の単語がn対nの関係にあるため、難しいという話から。それから実際の手法について。統計的翻訳が以前の主流だったけど、最近はニューラルネットワークを使った翻訳が主流らしい。

準備としてニューラルネットワークの解説があった。ありがたい。ニューラルネットワークとは、ベクトルを利用して重みづけを自動で学習させる方式のこと。入力と出力のデータを大量に用意する必要があるが、精度がとても高い。google翻訳はこいつを使ってるとのこと。

ニューラルネットワーク式なら、1語前から訳を予測するだけではなく、2語3語前、1-2-3語後からも重みづけを線形結合するだけで予測していくことができるので強い。線形、時系列のものに向いている。ってこれまんま音楽に応用できるやん。絶対すでに研究が進んでいると思うので、卒研に向けて論文をいっぱい読んでおこう(英語だろうな)。

言語や音楽みたいな人間の営みって、なるべくアルゴリズムを使わないで、枠組みはデータから得るようなアプローチをとれないのかなあ。ニューラルネットワークはだいぶデータ主導のアプローチに近くなったと思うけど、入力→出力の関係しか得られないのは制限がきついなあとも思う。概念を抽出するみたいなことはできないのかな?

第15回

まとめと今後の展望と、黒橋先生の恩師、長尾真先生(故人)へのインタビュー。

クラウドソーシングを言語資源構築に使うことについて。従来は言語仕様を専門家の直観に頼っていたのを、一般の人の言語直観を利用できるという最大の利点がある(思いつかなかったよ)。そもそも言語は一般人の慣習なんでこっちの方が優れてるはず。

ニューラルネットワークの導入について。やっぱ全自動、特徴量の自動設定ができるってのが大きい。適用範囲が広い。End-to-end学習(ブラックボックス学習)ができてしまう。なんか知らんけど解析できましたって感じになるのが新しいみたい。機械翻訳の質も一気に向上した。

長尾真 – Wikipedia

目玉は長尾先生へのインタビュー。長尾先生は2021/5/23に亡くなったばかり。科学技術文章の自動翻訳や、電子図書館システムに大いに貢献した偉大な方。60年代当時のコンピュータは1秒に数十回~数百回のオーダーしか処理できず、その状態から日本語入力システムを開発したりしたらしい。

自動翻訳システムは80年代ごろのプロジェクトで、機械翻訳の技術向上に大いに貢献し、企業からもいっぱい人が参加して、その後各企業に研究者が戻って、たくさん翻訳システムができていったらしい。こういうプロジェクト、現代でできるんか?金があるって、基礎研究ができるって素晴らしいことだなあ。

電子図書館の思想ってほぼほぼ慶應通信で習った図書館情報学のまんまじゃん。もしかしてこの先生が一人で開発したんじゃないか?で、そのうえで電子図書館は人間の知識の集積だけど、人間の頭脳はそんなもんやないと考えてらっしゃる。感情と他人への理解がまだまだ難しいと。たしかに「音楽・情報・脳」の講義でもあったように、感情が理性の上部フィードバック機構だという現代脳科学の立場からすると、コンピュータってのはせいぜい理性の世界の限定された世界しか対応できてないしね。まだまだ人間優位は揺るがなさそう。

参考: 音楽・情報・脳(’17)

先生はやりたいことをとことん追求せよと。数年でできる研究もいいが何十年もかけて追及するべきテーマを持つといいとのこと。先生は50年言語処理を研究してきた。50年ってスゲーわ。今私が50年研究できるテーマを持てるか?それは何だろう?

放送大学全科目感想 005 著作権法(’18)

  • 情報コース、社会と産業コース
  • ラジオ授業
  • 作花文雄先生(元文化庁審議官、弘前大学副学長・東京事務所長、現放送大学客員教授)著作権法の本を昔から書いていらっしゃる先生です
  • 難易度  ★★★★☆
  • おすすめ度 ★★★★☆

※注意:本講義は2022年に改訂される予定です

著作権の諸ルールを解説したあと、国際問題や制度の歴史にまで触れるかなり手の広い科目。そもそも著作権法は細かい規定が多く分厚い法で、放送大の科目としてはかなり分量が多い。法学に馴染みがないと苦労するだろう。

財産権の特別法たる著作権においても、他の法分野と同様に、曖昧なルールを判例や法改正によって徐々に明確にしていくという典型的プロセスの積み重ねがされてきたことがわかる。無駄に複雑な規定が目白押しなのは、著しい技術発展のせいで法概念の創出が間に合わないせいだろう。

第1回

概説から。知財法内の著作権の位置づけや役割について。まず全体から学ぶのがよいとのこと。細かいところから学んでもよくわからん。作花先生いい声してる。

不動産や動産は有体物で、独占的所有権がある。知的財産権も独占的所有権があるが物理的所有ができない。また、無断で違法にに利用しやすい。これを保護するために法的環境を整える必要がある。保護されないなら知的成果物を生み出すインセンティブが働かない。産業発展のために保護の仕組みが必要。また、公正な利用も必要だから、バランスをとった法律にしないといけない。

著作権法は創作的な表現物を保護する。他には特許や実用新案、半導体の回路配置に関する法律(略称不明)、種苗法などがある。

商標、不正競争防止は公正利用のための法律。H26に色彩、音の商標が登録できるようになった。商標は創作的でなくてもいい。識別性があればいい。他にもH26に地理的表示が保護されるようになった。GIマークという。不競法は誤認混同の禁止のほか営業秘密を保護する。判例においては複数の法律が関係することが多い。

排他的権利について。著作権は排他的。自分だけが利用できることを言う。他者は許諾、ライセンスが必要。対世的で物権的。違反すれば刑事民事の責任を負う。

適正利用について。利用全部に権利が及べば円滑な利用が妨げられ、社会にとって望ましくない。なので、権利の及ぶ範囲が各法律で定められている。著作権なら演奏とか公衆送信とか。

著作権の対象。絵画とか論文とか。創作性があるものを対象とする。社会の変化に伴い著作権法も発展する。情報社会での保護と利用の調和が大事。株価とかデータそのものは広く利用されるべきだから保護はいらないよね。場合によっては対価をあげることも必要かも。クリエイティブなものは保護されないと時間・労力をかけることが困難になる。

著作権は既得権益か。規制緩和すると短期的には便利になるかもしれないが、長期的には優れたコンテンツを阻害するでしょ。創造活動は先人が昔から積み重なった上に成り立つものだから、権利が広すぎるもの問題。バランスが大事。

著作権の構造。著作物を創作したのが著作者。複数人で作った場合、職務で作った場合、委託された場合は誰が著作者か?権利主体となるのは(図を参照)著作隣接権者という人もいる。実演家とかレコード製作者(音を固定した人)とか。演奏や放送は準創作活動といえる。出版権は著作者の契約で設定される。違法な出版物を差し止めできたりする。

保護対象物。著作者なら著作物。実演家なら実演。レコード製作者ならレコード(CD以外も全部)。放送の場合、番組ではなく、映画や映像などが保護される(?)。

著作権の独占権としての性質について。特許は絶対的独占権で、複数人が同じ特許を受けることができない。著作権は相対的独占権で、結果として同じ著作物ができても、どちらも著作者になれる(でも結果として同じになったことの主張は簡単ではない)。利用については、あらゆる排他的権利を行使できそうだけど、実際は利用態様が一つ一つ規定されている。

著作者の権利は大きく2つ。人格権的な著作人格権と財産権的な著作権。登録が必要ないので無方式主義という。

人格権は公表権(いつ公表するか)、氏名表示権(自己の名を付すか)、同一性保持権(改変の禁止)。

著作権。複製権などいろいろ。複製権は複製を禁止する。複製にはコピーだけでなくいろいろある。上映権演奏権などは、公衆に対して演奏などする行為のこと。自宅で歌うのはよい。公衆送信権も同様。展示権は美術作品など対象が限定されてる。翻案権は二次創作のこと。原則として許諾がなければだめ。

権利制限規定。著作物の自由利用が認められている場合がある。例えば複製権は絶対ではない。一定条件で複製はできる。30条以下いろいろある。辛抱強く理解していくこと。

保護期間。創作時から創作者の死後70年間。TPPで50→70年になった。

侵害の救済措置。民事上は民法の不法行為や不当利得が適用される。また特別に、差し止め請求権や、損害額の推定、10年以下の懲役など刑事罰規定もある。ベルヌ条約の加盟国の著作物も保護される。わが国で利用されればわが国の保護規定が適用される。

第2回

著作物について。保護の対象となるもの、ならないものについて学ぶ。紛争では著作物の定義が争われる。

定義「思想又は感情を創作的に表現したものであって、文芸、学術、美術又は音楽の範囲に属するもの」(2条1項1号)これに基づいて著作物かどうか判断する。

客観的に認識できるものが著作物。平均寿命みたいな単なるデータはダメ。実際の所データは労力は必要だが、これを独占すると弊害が大きい。論文やグラフは保護対象になる(かも)。だれがやっても同じになるようなごくありふれたものはだめ。創作性が必要。

人工知能で作成されたものは?まだ検討中。インドネシアの野生の猿が撮った写真は?2016年1月アメリカ、著作者は人間だけが認められるという判決が出た。きわめて常識的ですね。

「ありふれた」とは?難しいですね。判例を読むとなぜ保護されるか、保護されないのかが分かってくると思います。

ただのアイデアは保護対象ではない。学術的にはアイデアの盗用はよくないので避けないといけないが保護はされない。

著作物は無体物。記録された紙とかCDそのものは著作物ではない。著作物が記録された紙を損壊しても著作権侵害にはならない。紙の複製は侵害になる。美術館は著作権を有しているわけではない。でもお金をとったり写真撮影を禁止している。これは著作権ではなく所有権的な問題です。

著作物を明示的に定義するため10条1項にいろいろ書いてありますが、これは例示です。ほかにもあります。

1号、言語の著作物。手紙やブログも創作的なら著作物に入ります。原稿や口頭のものも含まれます。映画以外は、何かに固定されていることは要件ではないです。事実の伝達に過ぎない雑報は含まれませんが、新聞記事はだいたい著作物性があります。

2号、音楽の著作物。即興演奏も含まれます。

3号、舞踊・無言劇など。振付が著作物になります。演技自体は著作隣接権ですね。

4号、美術の著作物。形状や色彩、平面、立体などさまざまです。書道ももちろん。具体的な書だけが対象で、書体は対象ではないです。マンガも入ります。デザインは応用美術と言います。意匠法でも保護されますが、著作権法の保護対象外になるわけではないです。実用品のデザインとして作られたものもあるし、あとで実用品に採用されることもある。どういう場合に保護されるのか。著作権法的には(美術工芸品を含む。)と書いてあるだけですが、他のものも判例で含まれると解されてます。純粋美術と同程度の創作性があれば保護される、と考えられていますが、同程度ってどういうものなのか明らかではないです。

5号、建築の著作物。図面ではなく実際の建築物です。芸術的価値のあるものと解されてます。どの程度芸術性があればいいのか線引きは明らかではないです。

6号、地図や図形の著作物。学術的な図面図表とか、地球儀とか。機械の設計図は誰でも作れるなら創作性が否定されるかもです。

7号、映画の著作物。連続する映像で創作的に表現されたものです。かつては劇場用映画が代表的でしたが、今ではDVDなども含まれます。固定されていない場合はどうか。映画ではないが映像の著作物として保護される余地はあります。ゲームは?映像に変化がありますからいけそうです。固定要件はどうか。満たすと解されてます。すると頒布権が発生するかも。最高裁判決では、消尽論をとり、いったん適法に売られたら頒布権はないと判示されました。

8号、写真の著作物。やはり創作性が必要です。絵画を写真に撮っただけではだめ。創作性は、陰影とかシャッタースピードとかポーズとかを総合的に勘案して判定します。

9号、プログラムの著作物。作成者の思想・アイデアが反映されたものだからです。windowsも含まれます。言語自体はダメ。規約・解法自体が保護対象にならないのは趣旨からしてそうですが、プログラムはわかりにくいんで確認的に規定されてます。

二次的著作物。まず翻訳。他の国語で表現することです。点字とかは含まれません。古典の現代語訳もダメ。でも現代語訳に新たな創作性があれば翻案になります。編曲とはアレンジですね。楽器変えたりクラシックをジャズにしたり。変形とは聞きなれませんが、絵画を彫刻に、写真を絵画にしたりすることです。翻案はいろいろあります。文章の要約、児童向けの書き換え、プログラムのバージョンアップなど。

二次的著作物は著作物の許諾が必要です。二次的著作物の利用は二次的著作物の作者+原作者の許諾が必要です。

編集著作物。12条では素材の選択や配列に創作性を認めます。抽象的な選択配列方法自体は保護されないです。個々の素材については利用の許諾を得ないとダメです。権利侵害は、選択や配列を利用しているかどうかがポイントになります。一部の著作物が利用されているだけだと権利が働きません。

データベースの著作物。編集著作物に似てますが、性質が異なるので分けられました。情報の選択や体系的な構成に創作性を認めます。編集著作物は並べ方とか空間配置でしたが、データベースは検索性がポイントになります。個々の素材と全体の権利関係については編集著作物と同じです。創作性のないデータベースもあります。単に全件並べただけとか、だれでも思いつく方法とか。でもそういうデータベースにも労力がかかってる。ヨーロッパでは創作性のないデータベースにも独自の権利を付与してますが、わが国では何の権利もないです。

最後に、権利の目的とならない著作物について。法律や条約、通達、判決。翻訳したもの(地方公共団体のみ)。民間が作ったものは保護対象になります。

第3回

著作者について。著作者は著作物の創作をする人です。著作者人格権は一身専属権で譲渡できませんが著作権は譲渡できます。依頼した人は創作者にはならない。

創作した者、は、著作物に寄与しないとダメ。ワープロで打ちこんだだけの人は含まれない。口頭で話したものを誰かが文章に起こした場合も、口頭で話した人が著作者。固定要件がないから。書き手が独自の文章表現をした場合は(二次的)著作者になる。関与の程度が考慮される。SMAPインタビュー記事事件や静かな炎事件を見よ。インタビューを編集して取捨選択したり訂正した場合は、インタビュアーは補助者ではなく創作者と認められ、インタビュイーと共同著作者とみなされた。

無方式主義について。真の著作者をどう証明するか。特に未公表のものはどうやって証明するのか。名前を表示しておくとか防衛策とっとけとのこと。

相対性。偶然同じもの、類似のものができても独立して保護されること。特許との大きな違い。じゃあどうやって保護されるのか。侵害訴訟では相手方が複製かどうか立証しないといけない。著作者名を表示しておくと立証責任が相手に転換される。

他人を著作者とする契約は無効(著作者は変更できない)だが、著作権は譲渡できる。

共同著作物、共同著作者について。複数人が関与すれば共同著作物というわけではない。複数人の寄与が融合していて分離できないことが必要。補助的に参加している人は含まれない。分離できる場合は、集合著作物になる(法律上の用語ではない)。第1章がA、第2章をBが書いた場合など。共著、はどっちの場合もあり得る。歌詞と曲についても、それぞれ独立なので結合著作物といわれる。

共同著作物の権利行使については、バラバラにされると困るのでルールが定められている。著作者人格権の行使には全員の合意がいる(64条)。発表、氏名表示、改変のこと。ただし保全は一人でできる。話がまとまらない場合はどうするか。各人は合理的な理由がなければ合意の成立を妨げられない。また、代表者を定めることができる。冒認を信頼した第三者は保護される(民法と一緒)。

共有著作権について。一部が他人に譲渡されても共有と一緒。民法の準共有に関する規定が準用される。著作権の行使には他の共有者の同意がいる。こんなふうに共有には結構重大な効果があるので、著作権の譲渡には共有者全員の同意が必要。合意の成立は「正当な理由がなければ」妨げられないと、著作者人格権よりも厳しい。

職務上作成の著作権について。雇用者や法人は一定要件で著作者になれる。例えば作業報告とかの著作権は雇用主に帰属する。著作者人格権も雇用主や法人に移る(まじで!?)。合理性があるから(!?)。どの著作物の権利が移るかはルールを設定可能。要件について。まず法人の発意によるものであることが必要。形式的に事後報告だから発意じゃない、っていうのは認められず、実質的に発意に基づくかが大事。「職務上」は。雇用関係が必要。これも実質が大事で、派遣だと雇用関係じゃないので、派遣先との関係になる。職場で作ったものでも自分のためだけのものだったら含まれない。あと法人の名前を表示しないとダメ。将来的な話でもOK。さらに勤務規則等に「個人を著作者にします」って書いてない必要がある。

映画の著作者について。プロデューサーとか監督とかいろいろいる。著作権法的には16条で、監督とか美術とか全体的に寄与した者が著作者と規定されている。つまり共同著作物。でも29条によって原則的には参加約束をした映画会社とかに帰属する(今なら○○制作委員会か?)。15条による職務著作に該当する場合も多い。

第4回、第5回

(ランニング中に聴くことにしたので以後メモは適当)

著作人格権と著作権。著作人格権はわりと強い権利で、改変もできないし名前も表示しないといけない。でも制限規定という例外が多数設けられているので実社会上摩擦が避けられているという印象。例えばBGMで音楽流すときは名前なんていちいち出さないが、やむを得ない場合は許されるという例外規定を設けてそれなりに社会が回るようにしてある。

著作権は支分権がとても多く、やはり原則の権利自体は強い。細かい例外規定をいちいち覚えないと正確な射程がつかめない。しかし先生も根気強く覚えていってね、と言ってくださっているので、そのとおりにしようと思う。

著作権はネット時代に合わせて急速に変革を迫られているが、全然追いついていない。例えばキャッシュに著作権が及ぶか。学者がITに暗く、従前は世界的に的はずれな立法(キャッシュには著作権が全く及ばない)がなされていたという。

オンデマンド型の著作物公衆送信についても、送信可能化権をめんどうくさく細かく規定しているらしいが、もっと包括的に実装できるはず。世界的にも稀らしい。柔軟性もない。場合分けしたって複雑になるだけでいみないやん。もっと概念を洗練しろよって思う。固定要件とか放送の概念が狭いことが問題なんじゃないんか。特許法みたいに物にプログラム含むとか、概念の修正でなんとかならんのか?支分権が多いのも面倒ね。

第6回

著作権の続き。今回もたくさんの支分権について。頒布権って映画の著作物に特別に与えられた権利だけど、ゲームとかストリーミングとかの権利関係は実際のとこどうなってるのかな。あと還流レコードに時間割いてたけどもう滅びてると思う。法整備が進む前に流行りが終わってしまうこともよくあると思うのだけど、日本は法整備遅めな気がするのは、成文法ベースだからか?判例重視の米国ではどーなってんだろ?あっちは州ごとに管轄も違うし無駄に複雑に見えるから、成文法どっちが効率的かはよくわかんないな。

第7回

著作隣接権。著作権より狭く、場合によって規定がばらばらなのが特徴。業界団体の圧力で法整備が進んだという経緯のせいらしい。たしかにレンタルCDの要請で貸与権1年とか、謎の規定が多い。

既得権益の感じが強いので、例えばストリーミングの台頭とかで一気に情勢が変わったときに弱そう。

作花先生、権原を「けんばら」と読むのは「権限」と区別するためだからわかるんだけど、業務の業を「とが」って読むのは業界用語なのか?「ごう」ならまだわかる。科料の科と勘違いしてるのではないか。。

第8回

権利制限の1回目。著作権法は本当にいっぱいの制限があって、一つずつ細かい穴をあけていくような感じ。国立国会図書館が偉大だということと、絶版の古い書籍は公立図書館でオンラインで見られること、学校では著作物は使えるが塾はダメ(とは言ってなかったが学校の定義に入らないから駄目だろう)、ビッグデータやディープラーニングの解析のための著作物利用はOKってことがわかった。

第9回

権利制限の2回目。ほんとうに細かい規定ばかりで苦しい。法改正のたびにいろいろと積み重なっていって、複雑ではないのだが覚えることが多すぎ。例えば47条の6「送信可能化された情報の送信元識別符号の検索等のための複製等」とか一見意味不明だが、要するに検索エンジン上の著作物の取り扱いのことだった。一々例外を作っておかないと問題になるところが著作権のめんどくさいところ。もっと一般的規定にしろよ!と思うが、裁判例だけで議論を積み重ねていくのももっといやだな。

第10回

存続期間について。存続期間は他の知的財産権と同様、著作物の利用と保護のバランスをとるためにとても大事なところ、ということだそうだ。でも存続期間がなぜその長さなのかの理由ってよくわからんよな。死後50→70年になった本当の理由は何なんだ?

海外情勢的には2世代に著作権料を払うためで、寿命が伸びてきたから70年にしたんだって。なんやそれ!

第11回

利用について。著作権は権利だから対価を受けて(または受けないで)許諾をすることや譲渡をすることができる。著作者人格権は一身専属なのでだめ。

翻案権等が残存するってなんだ?よくわからん。

権利管理団体が必要なのはわかるが、JASRACみたいにすげー権限でかくなるのは解せない。ただ最近は登録制の事後チェックになり、ゆるくなったらしい。使用料の分配とか一体どうなっているのか?具体的に知りたい。キンドルアンリミテッドみたいなもんだよな。

拡大集中許諾制度よくわからん。印刷教材みるしかない。裁定は特許と同じやね。でも供託金いるのか。ただ排他的権利を制限するのは条約的に問題あるらしい。ただ今は古い動画の著作者不明のものを使いたいから、裁定が見直されてるらしい。

第12回

侵害と救済について。ほぼ特許と同じ規定であまり面白みはない。無体物の特性を鑑みて民法の不法行為よりも救済を手厚くしているという趣旨なのは同じ。特にダウンロード周りの規定がいちいち細かいが、徐々に侵害が認められやすくなる方向であるというのは感じられた。

第13回

国際的保護について。条約は基本的に全世界で守る著作物保護の最低ラインという位置づけだが、実演家レコード条約ではレコード会社が過剰に保護され、国際的に強い企業(アメリカと思う)の圧力がそのまんま通るという、国際法でありがちな強者論理がまかり通る状態になってた。やっぱ選挙で縛られる国内法と違って、ゆるい道徳しかない国際法はつらいものがある。

第14回

著作権の歴史。著作権のはじまりのとこは興味深いが、現代の改正のとこはいままでの内容とめっちゃ重複している。映画の保護期間70年延長の問題は、2回聞いてもわからん。印刷教材で読んどこ。発達障害の人のための制限規定は知らなかったな〜。私にも使えるかもしれん。

TPPはやっぱ保護機関の70年延長が一番インパクト強いよな。改正のときアメリカの強いコンテンツの保護だって言われてたけど、理屈としてはホントはどうなんだろね。

今後の話。情報化に対応して円滑な利用が進められることを先生は願っている。

著作権は時代遅れ論とか具体性のないパラダイム転換とか大風呂敷を広げた論は、目新しいだけで法の歴史を無視しており現実的でなく、全く意味ないと言いきっている!!先生かっこいい!!

第15回

現代における課題。雑多な話題の回だった。

まず私的利用と業との関係について。カラオケキャッツアイ事件、放送ではわかりにくいが大事な判決なので後で読もう。クラウドサービス上の著作物をアップするのは私的使用の範囲内でよいらしい。

貸レコード業→貸与権の流れだったのか。中古ゲームソフトは劣化のないデジタル物というとこがポイントらしい。

違法行為のプロパイダ責任。きほん責任を負うのは酷なのでナシ。権利侵害告知があったら消そうね〜くらいらしい。P2Pソフトを作ったやつの責任はどうか(ウィニー事件?)。米国のブログスター事件は作ったやつが負けた。日本はファイルローグ事件で責任を認めた。ウィニー事件は映画を送信したやつは責任を追ったが、作ったやつの幇助は認められず。無罪。ウィニー事件は確か本が最近出てた。読もう。

日本にはフェアユース規定がなく検索エンジンがしょぼいという見解は不当という話。先生はアメリカの事情を考えるべきといってる(ようわからんので印刷教材読もう)。

グーグルの検索で出てくる短いスニペットはどうか。フェアユースに該当するらしい。フェアユースってなんだろな。変容的利用に過ぎないってさ。米国著作権法にも手を出してもいいなあ。日本でも権利制限規定の一般的なやつを導入すべきという意見もあるらしい。研究開発を円滑にするには必要だね〜と先生〆て終わり。

放送大学全科目感想 004 小学校プログラミング教育概論(’21)

  • 情報コース
  • オンライン授業
  • 中川一史先生(放送大学教授)
  • 小林祐紀先生(茨城大学准教授)
  • 難易度 ★☆☆☆☆
  • おすすめ度 ★★★★★

初のオンライン授業。放送授業を8回に縮小し、さらに各回を細かく切って、練習問題を挟む感じ。小テストは1-4回、5-8回で先生が違うからか、難易度がだいぶ異なる。課題レポートは400字ですぐ書ける。

すでにモデル校で行われているプログラミング教育の実例を担当する先生の授業がすばらしく一見の価値あり。最も見ごたえがあったのは第4回の柏市立富勢西小学校の動画。残念ながら文科省のポータルでは紹介されておらず、この授業を履修しないと他に見る方法はない。でもポータルでは多数の事例が紹介されているので、今の小学生が何をやっているのか、一度見てみてほしい。

実施事例A一覧 | 未来の学びコンソーシアム (miraino-manabi.jp)

10数年後、彼らが社会に出た時が楽しみだ。

第1回

中川先生やさしそう。前半は学習指導要領の解説と、後半は事例を通した理解だそう。

まずなぜ学習指導要領が変わったか。情報化による社会の変化に対応し、より良い人生を作っていってもらうため。AIが仕事を奪う、のは言いすぎやろ。

生きる力とは。出来ることを理解、思考力を育成、人生へどう活かすかの三段階。小中高でプログラミング教育にも段階がある。小学校で論理的思考、中学校ではネットワーク利用、高校では情報1が必修(!)。小学校ではプログラミング言語を覚えるわけではない。プログラミング的思考を、無理なくやるというのがねらい。

プログラミング思考とは?自分の目標のために、どういう動きを組み合わせていくか、記号を組み合わせればいいか、どう改善したらいいか。要するに、コンピュータを道具にして、問題解決をやらせるのね。領域横断的とされる。なんかぼやっとしてよくわからんな。

学習活動の分類。6つある。指導要領に基づく単元の他、各教科内(算数、理科とか)でやるもの、クラブ活動、教育課程外のものもある。手引きでは、プログラミング言語自体は覚えさせる必要はないが、体験させるのはいいね、とのこと。

留意事項。5年生では正三角形を描くプログラムを作るらしい。これが想定。これと動作(現実)、実際(理想?)のサイクルを回す。てきとうに命令の組み合わせをさせるのではなく、論理的になにがまずかったか考えさせること。難しいなー。ねらいの実現のためには、プログラミングでどのような力を身につけたいか明らかにし、改善を行うこと。

教科活動の延長からアプローチしてもいいし、プログラミングに慣れ親しませるところから始めるアプローチをとってもいい。学校にけっこう裁量があるみたい。手引きは絶対よめ!とのこと。読みます。プログラミング教育ポータルというのもある。ハンドブックも読め。

文部科学省 小学校プログラミング教育の手引き

https://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_002.pdf

プログラミング教育支援ハンドブック(中川先生が書いてる)

https://ictconnect21.jp/ict/wp-content/uploads/2019/05/PHB2019_n.pdf

第2回

学習活動の分類。A~Fがある。単元内、教育課程内、クラブ、学校外とか。

今回はAの単元内でやるものについて。5年生で、正多角形をプログラムで書くらしい。

実際の例。まず分度器や定規を使って書かせる。するとうまくいかないのを実感できる。

次はプログラミングで作図。scratchを使ってる。むずかしそー。100歩動かす→90度回す→1秒待つを4回繰り返せばよい。4回繰り返す、を効果的に使えば短く済む。

意図→プログラミングの意欲が高まる(まじか?)

scratchを動かす実例がみられてとてもおもしろい。パズルをはめるような感じなんだね。

次は正三角形を作図。線を描く人を60度回すのではうまくいかない。120度回さないといけない。ここはつまづきそうだね。

発展項目として5以上の正多角形を描く。一つの角の大きさを180度から引かないといけないから、なかなか高度な感じがする。例えば正五角形なら180 – 108 = 72度となる。繰り返す回数も5回になる。

文科省の考えるプログラミング思考は次の通り。意図を明確にする→順序を考える→記号に置き換え→どうすれば意図する動作を実現できるか考える→試行錯誤する。なんつーか文章書くのとあんま変わらなくない?

ねらい→論理的思考力+作図が正確にできるとか。そりゃそうだな

次は6年生の物質・エネルギーについて。電気を取り上げる。柏市立第三小学校。

電気を無駄にしないプログラムを考える(!?)まずみんなにディスカッションさせてる(おもしろい)。

scratch使って、マイクや明るさセンサーを操ってる。明るさが50%になったらライトをつけるとか。6年生自在に操ってるんだけど!??小学生すげーーーー。ライトの話だけどなぜか楽器を鳴らしてる子もいたりしてたのしそうでした。プログラムの意図を説明させたり、プログラムの面白いところを先生が褒めたりしてる。

次は総合的な学習。暮らしとプログラミングの関係について考えるそうだ。自販機の制御やタッチパネル案内の制御について、手引きに書いてあるらしい。

授業例。便利な社会のために新しい道具を作る。プレゼンもする。MESHを使った。スマホやタブレット上で命令を作り、ボタン同士をつないでカメラやライトを操ったりできる。

プレゼンでは、犬型出迎え装置、鍵の閉め忘れ防止装置、ティッシュの残量報知器(人感センサに50回触れるごとにLEDの色を変える)などができたそうだ。すごいなー小学生。発表会もやったらしいよ。付箋で良さや改善点をボードに貼る(問題解決の進め方’19でやったのと同じ!!)こともやってた。

留意点。プログラミングはプログラミング自体が目的ではなく、教科のねらい達成が目的。評価も同じ。意欲や工夫を児童に伝えること。適切なレベルのものを選択すること。

第3回

次はB分類、学習指導要領外のもの。6年生の算数。横浜市立北山田小学校。

なんか文字式やってるんですけど。。x * 3.14 = yとか。

謎のキャラを登場させてxに値を入力するとyが出てくるようなアプリが出てきた。

プログラムのことをみんなAIって読んでる。小学生はAIが好きなんだな。

プログラムと電卓を比較してる。プログラムはタッチする→「xの値は?」と尋ねる→答え(y)を言ってくれる、というプロセスになる。先生が黒板にカードを貼って解説してる。

次はiPadを使って、プログラミングゼミというアプリでブロックを組み合わせてる。ああ、さっきのプログラムを自分の手で作らせてるのか!!

タッチ→質問→計算する→しゃべる、を組み合わせればよいので、これをヒントを出しつつ自分の力で組み合わせさせてる。半分くらいの子ができてる。

次はオリジナル問題を作らせてる。みんな頭いいな――

最後に先生が、プログラムの知識があっても、数式の意味が分かってないとプログラム組めないよね、ということを言って、学習指導要領の留意点(教科の知識がないとだめだよー)をおさえつつ〆ました。

児童の立場からするとやっぱりキャラが出てくるのがいいですね。また、プログラミングはあくまで教科目標達成のための手段という位置づけ。あとプログラミングはおもしろいよね!ということを実感させるのもよい。先生これマスターするの大変だな。ものすごい準備に時間かかったと思います。頭が下がります。作成したプログラミングは1を代入したりして動作確認もしてる。エンジニアの鑑です。

端末は途中から配る。時間制限が来たら端末は伏せる(重要!!)。あとほめる。

次は5年の社会。また北山田小学校。自動運転の話の延長上で、ロボットカーをプログラミングするらしい。

いきなりif – endifの話してる。while – end whileが無限ループって全員知ってるのか。。素晴らしい時代だぜ。。

車が左にはみ出したら(if)→右に曲がればいい(then)。センサーを使って判定しよう、と言ってる。

C-style という教材を使って実際に動かしてる。すげー。iPadでセンサーの数値のリアルタイム追跡をして、プログラミングした結果を直接机の上で見られる。車が動いてるからみんなエキサイティングだ!!

しかしなかなか難易度が高かったようで、うまくいかなかった子が大半。といっても中にはif-thenを余裕で操れる子もいた。

自動運転→プログラミングの必然性まではいい感じでしたけど、ロボットカーでは児童の興味関心はうまく引けたが、自動運転の意義からはだいぶ離れた感じしましたね。

レビューではプログラミングが難しい→自動車開発って大変なんだな!と気づかせられたのでOKと言ってる。まあそうか。

次は3年(!?)の外国語。また北山田小学校。

いきなりgoalのスペルが間違っていてgoleになってるのが気になる。

ってか3年から英語かーはやいな。そして、英語の道案内をボイスメモから聞き取りつつC-styleでロボットプログラミングしている。道案内通りのプログラムをしているようだ。高度過ぎる。

授業の終わりは English Finish!! なのか。

一発で目的地に到着するのは難しいからみんな試行錯誤している。しかも楽しい。最高じゃん。ペアでプログラム組ませるから、話し合いが強制になる(相手が悪いと大変そう)。

最後に3年国語のへんとつくり。Viscuitを使う。へんとつくりが別々に動いてぶつかると漢字になるプログラムを作る(!?)。タッチパネルでへんとつくりを書く。赤がへん、青がつくり。ぶつかると漢字になる。で、アニメーションを作る(ここらへんは自動)。これはプログラムと呼べるのか微妙だけど、見てて楽しい。

他にも1年の生活科でロボットを使って通学路を覚える、4年の理科でモーターカーを自動で動かすプログラムなどがある。やはり、教科のねらいを第一にするところが大事。

第4回

B分類2回目。次は6年の図工。柏市立富勢西小学校でパラパラアニメーションを作る。

みんなマスクしてる。

先生のお手本。パラパラマンガにAとBの分岐を付けてる。どうも全員にAとBの分岐をつけさせるらしい。これだけだと簡単なようだけど、全編Scratchでやらせるので結構難易度高めに見える。

ただ1→2と進むだけでは一瞬で絵が切り替わるのでWaitを入れないといけない。forも入れてる。分岐を入れるにあたり、AボタンとBボタンを配置する。ところが、AとBは最初から表示されていると困るので、AとBを最初に隠すようにしないといけないし、途中で表示して、押したらまた消えないといけない。うわーーめんどくさい。先生も説明するの大変だ。AボタンBボタンは「スプライト」という名前がついてるけどみんな分かるか?スプライトってどっちかというとゲームプログラミング用語だよ!?

それにしてもみんな絵がうまいな。先生もスキル高杉。IT企業でも有能な社員として活躍できる。

発表の時間。洞窟に入ったり入らなかったり。分かれ道に来たらBボタンが点滅している。点滅させるなんてなんという高スキルなんだ。そしてBを押すと落とし穴に落ちて死亡。Aが正解。次の子はAとBのどちらかを選んだあとなぜかCが出現!!これは「10秒経ったらCを出す」という命令を出したから。小学生すげーーーー

3時間で絵を描かせ、残り2時間でプログラミングをして発表、5時間でやったらしい。図工の特性をうまく生かしている、プログラミングの必然性があってよい、創意工夫が進む、子どもたちの困り感を上手に解消している、自分で考えさせている、ヒントカードも適切、説明も丁寧かつ必要十分、と授業がめっちゃ褒められている。ねーこの先生有能すぎだよね。うちの会社に欲しい。

次は5年生の音楽。同じ小学校の同じ有能先生。

琴の旋律を作って演奏!???

まず手拍子でリズムを確認。今回はscratchにテンプレを導入、音の高さだけ変えればいいようにしている。っていうかこれほぼほぼ作曲ソフトじゃないか!??

日本音階だからレとソを使わない、だからレとソを使わないようにプログラムを改造してくださーい!!!????仕様変更ですね。小学生にデスマーチを体験させている。しかし先生が有能なのでみんな全然つまづかないし楽しそう。あと、本物の琴も演奏してる!!柏市すばらしいな!!

そして最初に確認していた通りの複雑なリズムに則り、みんな立派に作曲し、全員が本物の琴で演奏している。。すばらしい。。。先生神や。。

最後に全員に振り返りを言わせてるのもいいな。私はこういうの苦手でいやだったけど、今思えば機会があるのはいい。そして、プログラミングは、あくまで作曲の補助と位置付けられているところも神。発表は楽器だからね。

大学の先生によるレビューもべた褒め。2人で1小節ずつ作らせたので、片方だけが操作することを防いでいる。できないとあきらめていた子も最後までできるようになった。演奏が苦手でもプログラミングによる補助で作曲・演奏までやり遂げられた。また、テンプレを使ってプログラミングを最小限にしたところもほめられている。

最後にViscuitで花びらを作り、72度ずつ回転させて5枚にして、灯ろうのデザインをするという授業。しかも地域のイベントで発表している。プログラミングを道具と位置付けるとても実践的な授業です。

創造と想像の力をはぐくむプログラミング教育ですねーと先生。すげーですよね

避難訓練のときに、自分の行動を分解して考える(if文で分岐か!?)というのもあるらしい。なんていうか仕事に直結する感じですね。

小テストは1~4回までずっとプログラミング教育の手引きを読ませる感じでした

第5回

コンピュータを使わないプログラミング事例について。先生が変わった。

まず考え方について。狙いの確認。「プログラミング的思考」が大事。自分が意図することを実現するために、記号をどうやって組み合わせればいいか考える力だそうです。何度も言われているようにプログラミングは教科の補助(とは明記されていないがそういうことだと思う)です、といわれている。年間に取り組む単元は3つまで。発達の段階を考慮しながら繰り返しましょうと言っている。これはすべての学習に通じることですよね。

コンピュータを使わない授業を実施する必要としては、コンピュータを使う回数が少ないから。使わないでプログラミング的思考を補完するような授業が必要になる(そんなにたくさんやるのか)。プログラミング的思考は、順序、反復、分岐、抽象化・細分化だそう。これどうやって教えるんすかね。

小2の算数の事例。すごろくだね。おなじみscratch的なカードが見える。那珂市立芳野小学校。

ねらったマスに進めるようにカードの組み合わせを考える!??小2なんですけど

指令は、270のマスに止まれ!とのこと。めっちゃ楽しそうだなー。手持ちのカードは100すすむ、10すすむ、10もどる、?回繰り返すの4種類。繰り返す、を使えばかなりのバリエーションが期待できそう。

すすむ、だけを組み合わせる子。数えるのが大変だけど頑張った。

100を2回繰り返す+10を7回繰り返す。明解だね。

100すすむを3回、10を戻るを3回。これもあり。

で、先生は「繰り返し」を使えばステップ数が少なくなるよね!?という誘導をしている。すばらしいですね。

次はペアで問題を作る→カードを組み合わせる、で分担する。繰り返す、を使いこなす子は半分くらいか。なかなか難しいみたいだね。100すすむと10すすむをひたすら重ねる子が多いでした。

先生自身の振り返り。繰り返しの考え方を教えたかったらしい。コンピュータがまだ難しいのでまず考え方に慣れさせるという意図もあった。朝の会帰りの会で繰り返しについての動画を見せたりもしているらしい。先生まじで神(みんなそうなんだろうな)。

6年生理科。リトマス紙の性質をフローチャートを使って酸性・アルカリ性・中性を振り分けている。工事現場みたいですね。プロセスを可視化することが目的。発表が苦手な児童でも行けるというのが利点。なるほど。

1年生の給食準備。やはりフローチャートを使う。「給食当番か?」で分岐したり、「コップに水をくむ」などを組んでいく。目的は給食準備をはやくして、休み時間も長くすること。

算数。二等辺三角形の書き方を可視化して、説明させる。見通しがよくなるのでいいですね。

フローチャートは道具であるということを大事にせよとのこと。コンピュータを使わないプログラミングの教育のポイントは、必要感(給食の時間が長いとか)、有用感(できなかったことができる)、相互作用(たがいに説明しあう、新たな方法を見出せる)。

プログラミングを学ぶ授業、教科達成のためにプログラムを利用する授業、コンピュータは使わないがプログラミング的思考を使う授業、をバランスよく実施することが望まれるという。前の2つをメインにせよ、ということ。なるべくコンピュータ使ってねってことか。この回で取り扱った授業はあくまでサブという位置づけなのね。

第6回

先生の髪型が変わった。今回はプログラミング教育で使用する教材について。

種類。ソフトウェア型はScratch, Viscuit、MakeCode, プログラミングゼミ、プログル。ブロックの組み合わせであることが多い。こっちがメインになる。ほとんどがブラウザ上で動く。しかも無料。

ハードウェア型はロボットなどを使ったもので、MESH、ArtecRobo、レゴWeDo、micro:bitなど。ほとんどが有料(そりゃそうだ)。教科書にも出てくることが多い。

ソフトウェア型の説明。まずScratch。MITが作ったのか。共有機能があるので世界中で作品を共有できる。

Viscuit。完全ビジュアルなので手続きを明確に示すことなく動く。幼稚園でも行ける。

Swift Playgrounds。アップルのやつだね。画像がないのでよくわからん。iPadですね。

Hour of code。ウェブ上の学習サービス。子どもに見せられそうね。

杉並区立西田小学校の事例。またScratchを使った5年生の多角形のやつだ。内容は第2回と大いにかぶってる。

次は府中市立府中第三小学校、Viscuitを使った3年生の授業。C分類で、たまごから何かが出てくるようなアニメを作るようだ。

次はScratchを操作(あとで私たちもやる)。先生が操作方法を解説してくれる。スプライト、ペン、x座標、y座標など独自の用語がたくさんあるね。テンプレを先に作っておくと楽です、そうだね。ペン→直線を引いたりするやつ。ペンを上げる→線を引く機能をオフにするってことか。旗→Runとおなじ。1秒待つ、がないとプログラムが一瞬で終わるので、大事になるんだけどデフォルトで実装してほしい。。

次はViscuit。先生がペイント様のソフトで魚を描いた。眼鏡ツールを出してキャラをずらして配置すると動く。2つ眼鏡を出すと動作が和で表現されるので複雑な動きもできる。ずらす、ってところがなかなか難しいと思うけど、慣れたらおもしろそうね。

ハードウェア型。レゴWeDoから。ビジュアル型プログラミング言語でレゴを動かす。

アーテックロボ。ブロック+ロボット+Scratch様のブロック型プログラミング。

micro:bit。BBCが作ったらしい。イギリスの11-12歳に無償提供された。USB経由でプログラムを送る。なんとテキスト型プログラムにも対応。

三鷹市北野小学校、小6理科。電気を無駄なく使うことについて。レゴWeDoを使い、トイレの照明のon/offを作ったらしい。

試行錯誤について。思い付きや当てずっぽうはだめ。どこが間違っていたのか論理的に考えさせるように誘導する。

実践についての留意点。体験を言語化せよ。たとえば、変更点→結果をワークシートに書かせる(大事だな!)。あと、必ずグループワークにせよ。もしくは意見交換の機会を与えよ。学習意欲、課題の達成に効果があることが証明されているらしい。

レゴWeDoを先生が操作。レゴでできた扇風機を動かす。まず回転8。おおbluetooth越しに動いてる。赤い光+回る+黄色い光、を繰り返させると点滅しながら扇風機が回る。これは楽しそうだ。

次はmicro:bit。センサーがいっぱいあるね。ブラウザ上でプログラミングする。Scratch用のブロックがいろいろあるね。ブラウザ上でmicro:bitのシミュレーションがある。LEDの光るパターンがいろいろある。ずっと(whileだろーな)で4パターンのLEDの点滅を繰り返し、ハードに転送して実際に光らせてた。

小テストは簡単になりました。

第7回

先生の髪型が戻った。

今回はC(教育課程内だが教科外)、D分類(クラブ活動など)。題材は校外学習との連携について、石川県小松市の事例を紹介する。

2時間事前学習した後、科学館で2時間、レゴマインドストームのプログラムを組む。最後に1時間使ってレビュー。

科学館のおじさんがセンサー、アクチュエーターの説明をしている。アクチュエーターは実際に動くところ。ロボットが配られて、みんなわくわくしてる。やはり2人のチーム。ペアプログラミングの手法が徹底されている。

まずは音を出すだけのプログラムを組んで転送。みんなノリノリになった。

次は前に動かしたり後ろに動かしたりしてる。ちゃんと組んだ通りに動くからたのしいね。

さらに曲げたり回転したりする。回転角度も調整できる。

次は課題。曲がった道を落ちないで渡り、ゴールにおいてあるブロックを倒すプログラムを組む。みんな前に進む長さを2, 2.5, 3などうまく調整していってる。ブロックをぎりぎりで倒せたり、倒せなかったりしてみんな大興奮してる。ほぼ全員が成功。

次はブロック1か所+複雑に曲がったあと所定の位置で止める。バックを駆使し、曲がる角度の調整、パワーの調整もしないといけないのでたいへん。途中で無駄に回転してしまったり、バックで行き過ぎたりなかなかうまくいかないけど、みんな試行錯誤しつつ、一歩一歩前に進んでるなー。そしてとうとう1グループが成功!!やったーーー!!最終的に半分くらいのグループが成功した。

科学館の教育員さんにインタビュー。プログラムが組めるとみんなの目がぱっと変わる瞬間が見えたと言っていた。いいひとだ。デジタル/アナログのつなぎ目になることがいいですねと言っていた。いろんなものにプログラムが入っていて誰かがそれを作ってくれているのが分かってくれるといいし、段取りや先の見通しの能力が一人でも育ってくれると嬉しいな、と言ってた。

先生にもインタビュー。すべての学校で同じ水準の教育は与えられないので、科学館で質の高い授業を提供できることがよい点。プログラミングだと意欲が上がってみんなやりきることができた、というのがよかったそう(普通の授業だとあきらめてたはず)。ペア学習はも全員が参加できるという利点も挙げていた。

授業をプラニングしたインストラクターさんにもインタビュー。机上の学習だけではだめだから体験させないとダメ、試行錯誤した達成感を味わったことがよいが、日常にどう結び付くかまでは定着しているかというと怪しい、というのが課題。今後も正多角形、電気のところでプログラミングを使うことが多いらしい。

質問紙(アンケート)によれば授業後で興味・関心や苦手意識など8項目が全部平均点がアップ、特に興味・関心や、身の回りの生活に役に立つかどうか、の得点が上がっている。

授業パッケージの意義は、今まで述べたことにプラスして、教師がプログラミングに疎くても、教師自身のスキルアップになることにもある。

次はクラブ活動。特別活動は自主・実践が原則。また、異年齢・協力もキーワード。組織や活動計画は児童が行うということ。でも、計画の支援や、児童が興味・関心を持つような指導はする。ハードウェアに関心が集中しがちなのでソフトウェアにも誘導する。グループも編成させたりする。成果の発表も必要。コンテストに応募するとか、何か目に見える形で成果を残したい。

実施例はなし。残念。今後に期待ですね

第8回

プログラミング教育推進の取り組みについて。

まず教員研修。やっぱみんなプログラミング知らんよな。一番大事なのは研修したことを教員が実践できるかどうか、ということらしい。

教育委員会による研修から。そもそも教育委員会はプログラミング分かってんのか?授業のできる教員が模擬授業をやるのでそれを見るらしい。予算も大事。教材高そうですものね。実践教材に「音楽 2年 リズムパターン」って書いてあるんだが2年生は作曲できるようになるのか。。

悉皆という言葉を学んだ。全員ということ。研修では講義はもちろん、Scratchを体験したりグループワークを教師自身がやる場合もある。

取り組み例。大学教授や民間企業を講師として招いたり、動画を見せてもらったり、モデル校の公開授業に参加したりする。年3回やってる。今回の授業で見た先生はスーパー先生すぎたのでやっぱり全員が全員そうではないよなあ。プログラミングだけではなく授業方法、教科と関連していることも全部大事になるし。

校内研修。小規模で強制力が弱い。でもニーズに応じた研修ができる。校内でやるから教員同士が仲良くなれる。

研修を評価する視点(一般的なやつ)by カーク・パトリック。ステップ1:反応(アンケートとか)、ステップ2:学習(理解を問う。テストやレポート)、ステップ3:行動(実践につながったか。すげー大事)、ステップ4:成果(学習者にどのような影響があったか)。以上の点から研修企画者が評価すべき。

これを押さえると、まず教員への聞き取り調査でニーズを把握するべき。授業はどうやるのかとか、そもそもプログラミングって何とか。ニーズはこれかなーってなんとなく決めるではだめ。ちゃんと聞くこと。付箋紙とかでいい。

研修はどういう組み合わせにするかも考えないと。講義→体験→模擬授業研修とかね。一例で、グループワークでPMIシートを使って付箋紙で意見を集める(これも問題解決の進め方でやったやつだ!)。近隣の中学校の教師や教材の担当者、地元のプログラミング教室の講師を招いたりしてもいいね。

フィードバックはとても大事。でも上司と部下っていうより同僚同士でやろう。話題にしたり職員会議で紹介したりするのがよい。

ひと・もの・ことの視点からの整理。ひと→教師、ICT支援員など、こと→研修など、もの→教材、モデル事例、ICT環境そのもの。

ひと。ICT支援員は2800人いるらしい。結構集まるそう。

もの。教材は以前やった分類と同じなので略。今回の授業でつかった実践例は文科省のポータルに全部あるらしいよ。

こと。プログラミングが苦手な教師はどうすればいい?という質問に、文科省は、まず手引きやサイトを見てプログラミングが難しくないことを実感せよ、要は論理的思考なんだから、あなたたちの経験、指導のノウハウも生かせるよ、先入観を捨てよと言ってるね。教師が論理的思考できてないとだめだね。みんなしてると思うけど。

最後に課題レポート400字。それほど難しくなく終わり。

放送大学全科目感想 001 AIシステムと人・社会との関係(’20)

シラバス参照 (ouj.ac.jp)

  • 情報コース・総合科目
  • ラジオ講座
  • 山口高平先生(慶應義塾大学教授)
  • 中谷多哉子先生(放送大学教授)
  • 難易度 ★★★☆☆
  • おすすめ度 ★★★★★

序盤では、AIの歴史とともに、当時のAIがどのような仕組みでできているかも詳細に解説してくれる。仕組みをトレースするのはとても面白い(情報コースの人なら)。

中盤以降はAIの活用例と今後の課題について。ここら辺は数年で大きく変わるから賞味期限が早そう。慶應理工学部や幼稚舎、都内公立小での実践例は楽しく、ああ都心部ってこういうとこ恵まれてるんだなーと感じた。

今の所AIは人力に多くを頼っており、自動で賢くなるようなイメージは間違っている。ディープラーニングは所詮相関関係しかわからないので「なんかわからんがこういう傾向がある」ということしか学習できない。意味や構造は人間が解析して定義してやらないとまだまだ難しい。

全体的に、先生がいろんなことを紹介したいんだけど、しきれない、という雰囲気が伝わってくる。

第1回

AIの誕生と1960年代の第一次AIブームについて。汎用的な問題解決を目指したが、当時のコンピュータは遅いこともあって、入力が極めて限られており、ごく定型的な問題しか解決できず、実用性がないことが欠点だった。原理は素晴らしいんだけどね。LispとかprologとかAIの流れで出てきた言語だったんですね。

探索について。これしっかり学んでおかないと、AIプログラミングするとき、無駄に処理時間がかかるプログラムができてしまいますね。

AIスピーカーの原理が1960年にできていたとは驚き。イライザと言うらしい。siriにイライザって何?と聞くと、歴史を教えてくれるらしい。応答パターンを山ほど用意しておく、というやりかた。確かに、Alexaも応答パターンがあるんだなーって感じの動作をするね。

ディープラーニング、ニューラルネットワークも実は古い技術であるという。1960年の時点で、ロボット科学にもかなり応用されている。すごいな

マシンパワー不足もあり、全然複雑な問題は解けず、第一次AIブームは終わる。

第2回

1970年代の話。ヒューリスティックスとは、必ず正しいのではないが、だいたい正しい知識のこと。これを目指したのがスタンフォード大学。

プログラム言語でおなじみのif-thenルールはこの頃(1970年代)に出来たらしい。

マイシンという医療診断システムについて詳細に解説する。テキストがないと意味が分からない。トレースしてみてはじめてその構造が分かるようだ。プログラムに慣れていればわかりやすそうだが、初学だと辛そう。

ルールベースは、AIっていうより、構造化されたハードコードの集合体という感じ。開発には5年もかかったらしい。頑張ったことはわかるが、正直、開発コストに見合わない。私がエンジニアならやりたくねーです。前向き推論、後ろ向き推論は、大事な概念になりそう。

推論の過程を全部表示してくれるってのはとてもいいアイデアですね。私も採用したい。

ルールモデルを検証するテレイシアスもすごいらしいのですがラジオだと全然わからない。テキスト読まないと。

第3回

1980年代第二次AIブームについて。マイシンの成功によりまたブームが訪れる。

エキスパートシステムであるためには、知識と推論エンジンを分離することが大事。現代のプログラム開発にも通じますね。全部プログラム言語内に知識を入れた開発もあったそうですが、今の開発手法から見ればナンセンス。DBなしの知識ベースには無理がありますね。

prolog楽しそう。やってみたいですね!!ただ難しくて、実際に先生が講義したら1年かかったそうです。LISPの方がメジャーらしい。

日本で開発された第五世代コンピュータ(FGCS)は意義はあったが産業貢献はなし。かわいそう。

この時代のAIって自動進化する仕組みは全然なくて、人間が全部手順やらデータやらをセットしてあげないと使い物にならない状態ですね。機械学習するための処理速度も容量も、データセットも全然足りないからでしょうけど。

第4回

第3次AIブームの前知識として、90年代に発展した手法である決定木、ベイジアンネットワーク、サポートベクターマシン、パーセプトロン、ニューラルネットワーク、ディープラーニングなど現代でも有名な手法についての基礎知識を学ぶ。ゲストの中谷先生が解説してくれる。

バックプロパゲーションで結合加重を変えていくとき、必ず誤差が減るように加重をコントロールしていく。そうすると訓練データによって過学習が起きたり、多層で学習すると影響が極端に大きくなったり、小さくなったりする。そうするとニューロンのネットワーク構造や層の数をどうするか、ということが非常に難しい。

例えばプラントの故障について。故障は滅多に起きないから、ほとんどのデータは正常である(アンバランスデータという)。学習はうまくいかない。

畳み込みネットワークは詳細に解説してくれているみたいだが、ラジオでは意味不明。フィルターが重要なんだな、だいたいのことを把握しているんだな、ということだけわかった。

リカレントニューラルネットワーク、フィードバックの仕組みはよくわかりましたが、処理速度が大変なことになりそう。

報酬、忘却もシミュレートするんですね。確かに必要ですよね。強化学習は魅力的だけど、現代でも時間がかかる。アームで物をつかむだけでも数十万回の試行が必要。大変ですね。

第5回

2012年、googleのディープラーニングによる顔認識が広く知れ渡り第3次AIブームが始まる。チェス・将棋・囲碁のAI制覇の様子などエキサイティングな話題になってきた。

現代のAIの特徴はデータ量・計算量で圧倒し「物理で殴る」システムが多いということ。将棋の藤井くんもAIと打ってAI特有の癖がわかってきているという。デイトレ勢も同じことを言っていたような気がする。2021年現在でも、格ゲーのCPU攻略法と一緒でまだまだ機械は機械だとわかるような状況なのだろう。

犯罪予測で犯罪が半減、スシローのネタのトレンド予測でマグロの廃棄量が75%削減と聞くとAIめっちゃ役にたってるやん、と感じる。

AIは人間の仕事を一定程度奪うかもしれないが、まだまだ弱い。ディープラーニングは、相関関係しか理解できないから、真の相関があるのかどうかは、人間が判定しないとわからない。統計学と同じ原理だ。世の中にゴミ統計があふれているのと同じく、ゴミAIも多数存在するに違いない。特徴抽出の前段階である視野の限定だってAIには現時点では無理。昔のAIと同じで、入力と出力の規格化、データの解釈が一義的に決まっていること、学習に使うデータがまともであること、これらの条件をクリアしないと全く使い物にならない状況であることが分かった。

当面、人間は安泰かな。シンギュラリティなんて夢物語だね。

第6回

AIの歴史の話は終わりで、今回から実践の話。まずはスポーツから。野球、剣道、サッカーの話だった。

データサイエンスは、データの入力を整えるのと、出力後のフィードバックに一番労力がかかる。計算自体はすぐ終わる。

剣道では姿勢の補正や、どういう練習をしたらいいかにデータサイエンスの手法を使い、、先生の息子さんの所属する剣道クラブで実際に参考にしているらしい。

データを初めて野球に取り入れたのがノムさん。だから野球はデータを受け入れる素地がある。データサイエンスによる分析結果もかなり使われているらしい。

ところがサッカーで同じことをやったら「俺たちのプレイじゃない」と言われたという。あほか。受け入れやすいデータの解釈の方法を考える必要があると先生は謙虚におっしゃってましたが私はそんなんいらんと思います。

受験勉強とか、語学の学習とか、データサイエンスやAIは絶対応用できると思うんですけど、学習用データの取得と整備をどうしたらいいか、がとても難しそうです。いずれAI受験とかになったりしてね。

第7回

自動運転について。2018年時点の情報であり、賞味期限が早そうな話題。

2004年に米国DARPA(国防高等研究計画局)がグランド・チャレンジというロボコンみたいな自動運転コンテストを開催したことにより、一気に開発が加速した。

はじめは砂漠を走るだけだったのが、2007年(最終回)には街中を走り、交通規則を遵守する、人を模した障害物をよけるなど急速に高度なものになった。

ここで高い技術を培った団体がスタートアップになり、googleやアップル等がこれらを買収して、自動運転業界を牽引していくことになった。

自動運転にはレベルがあり、0~5まである。0がアシストのみ、5が完全な自動運転となる。現在レベル3を実現しようと、全世界でしのぎを削っている状態だそう。アメリカ、中国が世界のトップで、日本はまだまだ。アップル社が世界一自動運転の特許が多いらしい。

中谷先生が慶應新川崎タウンキャンパス(そんなのあったんだ!)で自動運転の試乗の実況をするところが楽しいです。

2018年時点で死亡事故は3件。まあ少ないですよね。

第8回

サービスロボットについて。主に慶應の学祭でやったロボット飲食店の話。

まずは2000年代のロボットブームと終焉について。AIBO流行ってましたね。ロボットはインタラクション(相互作用)機能が必要だけど、当時の技術では不可能で、AIが発展しないと無理だった。ペッパー君も流行ったけど、2018年頃には廃れた。いまははま寿司で受付として使われているだけ。

2012年頃、中国ハルビンでロボットレストランがオープンした。しかし子供がロボットの前に立ったらぶつかってしまう、注文をミスる、食事をこぼす、など問題があり半年で閉店した。

はま寿司でペッパー君が活用されるための涙ぐましい工夫と努力についても語られる。そもそもペッパーは丈夫に作られていない。手を振ったり何度も往復動作をすると止まる。故障する。悲しい話だった。なのでできるだけ動作を少なくして、かつ、お客さんに喜ばれる動作をするようにチューンアップしているらしい。

後半は慶應理工学部のロボット喫茶店プロジェクトについて。接客はペッパー。運搬は別の人(ロボット。HSRとジャコ2)がやる。注文は音声認識で行う。他にもカメラなどで客の要望を把握する。ノートPC10台で情報処理をする。慶應はロボットに強く、現時点これができるハードは慶應だけが持っているらしい。

応用されている技術は知識ベース推論、音声対話、顔認識。入店検知をしたり、注文を正確に確認識したり、店内の環境の状況(環境地図)を作ってぶつからないようにしたりする。

実際に2018年にロボット喫茶店は慶應の大学祭で公開した。ペッパー君が受付する様子、HSRとぶつかりそうになるが回避する様子、がライブで放送された。子どもが注文してた。上手に受付するなー。注文をうけて食事を作るのは早い。顔認識を使ってクレープにチョコで似顔絵を描く機能も(3分かかる)。累計250人が来て、17万円の売り上げ、8万円の利益。すごいね。

アンケート結果では、ロボット喫茶にはエンターテイメント性が重要になっていることがわかった。いまのところは楽しい体験という位置づけですね。ロボットが飲み物をお客さんに渡すと感激するらしい。

↓は2010年の様子

慶應三田祭で「ロボット屋台」 ペッパーが料理を仕上げ! – bouncy / バウンシー (moov.ooo)

第9回

間接業務とAIの関係について。

間接業務は裏方の事務作業などのこと。大学の間接業務を例にする。経理などの定形事務処理を効率化する。エクセルマクロはAIか?なんともいえないな。

RPAの説明。狭義には複数のアプリケーションにまたがる操作のマクロ化とか。これはAI関係ない。広義のRPAは言語理解などの処理を含む。

具体的に何をするのか?派遣事務職員が売上データを抽出し、エクセルファイルに転写する、業者ごとに合計する、FAX送信する、処理を自動化するなど。VBAで自動化することもある。ってやっぱAIじゃなくない?ただの自動化やん。プログラムはAIなのか!?謎だ。あ、ここはRPAの説明だからAIじゃないんか。

業務ルールは変更される。ハードコードしてると手間がかかる。なのでエキスパートシステムのように、ルールとデータを分けるのが良い。そうするとルールの変更が軽微なら、ユーザー側でも反映できる。BRMSという標準化された言語が使える。ルール文の作り方はよくわからん。印刷教材みよ。

出張旅費申請を例にして業務をルール文にする。日当と宿泊料の計算はルールを書ける。申請文は大量に提出され審査に膨大な時間がかかるので大変だからこれを自動化したい。講義を聞く限りWEBのアンケートみたいな定形入力にさせて条件分岐していけばいいっぽい。データベースに属性とか金額とかを入れといて、路線選択アプリなどと連携すればよいですね。開発では大したことやらなくていい。簡単なシステムで時間が1/3になったそうです。

意思決定にも使える。たとえば保険の自動査定システム。定性(初診から時間が短い)を定量(初診から3ヶ月以内)に変えていくことで自動化が可能になる。これで査定時間が1/5になった。

これAIか?ただのプログラムじゃん。しかも簡単。機械学習を伴わなくても、AIって呼んでもいいのか。。こんなのに人類の雇用が左右されてるんかい。

第10回

社会インフラについて。

古い橋梁や道路の点検診断をどうするか。笹子トンネル事件では目視で検査していただけなので検査がザルだった。目視のサポートが必要。

ディープラーニングでひび割れを検知する。まだ実用段階でない。ヒビの撮影がたりない。畳み込み型で学習したら、80%検出できるようになった。ドローンロボットも活用すると効率化できそう。分担がうまくいけば効率が高まるね。

etcの点検。点検開始から数時間ですぐ復旧させなけねばならない。点検業務プロセスを分析しクラスやプロパティに分解し、知識ベースを開発。インタビューによって属人的なワークフローをゲットしたりした。分析過程が一番大変そうだ。ナレッジグラフ、オントロジー、専門用語が難しい。複合知識データベースを利用して、スマートグラス越しに点検手順を教えるシステムを開発したそうだ。画面の実際の説明もあったが印刷教材を見ないとよくわからない。作業者が質問すると質問リストが表示されたりするらしい。蜘蛛の巣が装置の隙間に入ることもあるらしいので、注意とした表示される。

なんという開発に手間のかかるシステムだ、とおもう。実際のシミュレーションが難しい装置なら有効かもしれないが、割にあうのかこれ?システムをつかっても32%は操作が難しかったという。実行可能な操作は50%増。多いと見るか少ないと見るか。そして抽象化したワークフローはあまり役に立たなかった。上司のみ手順の見直しにつながったと評価している。

高速道路の雪氷対策について。雪で閉鎖はしたくないが、せざるを得ない場合。どのタイミングで閉鎖するのか。判断基準は属人化の程度が高く、インタビューに時間がかかった。気温や湿度で判断するが、根拠は何か。詳しくは印刷教材をみよ、だそうだ。凍結防止剤散布などの業務もプロセス化する。そうして雪氷対策教育支援システムを作った。システムで学習した新人は経験3年程度と同等の知識が得られた。

教育システムがあれば3年かけて実践しなくていい。システム構築は大変だが、効果はかなりあるようだ。塾でも応用できるか?

第11回

学校とAI。

文科省のリーディングプロジェクトについて。スタディログってなんじゃろ。生徒に合わせた個別学習がトピックらしい。

慶應理工学部の教師ロボット連携事業について。小学校の温暖化の授業で、児童の興味関心が続くような授業を依頼された。家庭科をやろうとしてもお皿の認識などが難しいのであきらめ、社会にしたらしい。教師とロボットがかけあう。面白く教えないといけない。子供が騒がしい場合にどうするか。授業づくりも難しかった。インスタンス関係やクラス関係の定義の具体例は印刷教材参照。このオントロジーってDLなのか?人間定義なのか?話を聞いているとどうも人間定義のようだ。インタビューを元に考えてる。たいへん。驚きなどの身振りも定義してる。

実際のライブの様子。すげー受けてる。??する?→動画を再生するよ!とか、ヒントだよ!とか面白いこと言ってる。かなり楽しく学べたみたいだけど、音声認識が難しい、時間かかりすぎ(これが一番致命的では)という課題があった。

慶應幼稚舎でてこの原理の授業の実験をした。ロボットアーム使ってる。児童の回答状況がわかるようにして、サポートを容易にするようにできるようになった。ただアームがなかなかものを掴めないのを、児童が応援してたのが微笑ましい。スパイダーマンの顔になって静かにせよと言ってウケたりしてた。もっとロボットと話したい児童もいっぱい。ロボットはエンタメ要素が強いですね。

教師がロボット授業を作れるようなツールの開発について。これは。。RPGツクールじゃないか!!ツールのセミナーもやってるそうだ。小型ロボットとpcが40万ほどするので価格の問題がある。高いツクールだなあ。

第12回

知的パートナーAIについて。

まずはナレッジナビゲーター。講義資料の準備など。論文の検索やスケジューリング管理とか。秘書のような機能を求める。30年前の提案だけどまだ全然実現せず。

対話が難しい。ディープラーニングによる対話は難しい(!)。やはり相関関係しか判定できないから。それっぽい返答はできるが因果関係は現時点ではむり。上位下位関係や意味関係、プロパティをオントロジーを使って定義しないといけない。

オントロジーは概念感の上下関係と意味関係を定義したもので、そのデータベースをナレッジグラフという。自動構築は難しい。手動しかない。なので開発が難しい。自動構築の仕組みを作る試みはある。例えばWikipediaから作るアプローチがある。時代小説、芥川、夏目漱石などの構造を作るがWikipediaには間違いもあるので、デバッグは大変。ナレッジグラフとして2000万のデータを構築して小学校で実験した。結構答えられてる。クイズには十分使えそう。宮台先生との対話も面白い。神様は存在しますか→関連してない=プロパティなしなので、哲学者にとっては面白かったみたい。人が勝手に深読みしておもしろがってるだけでは。今後の自然言語処理の発展に期待。

温暖化についての小学校での討論にオントロジーで強化したロボットを投入した。ある程度キーワードが照合した時、節電の説明とか火力発電で二酸化炭素が出るよと言ったりとか。ライブではロボットが声かけをしてくれてみんな興奮してた。やっぱエンタメ要員やね。杉並区立浜田山小学校だって。東京の小学校は恵まれてるなー。小5でエネルギー問題をかなりハイレベルなとこまで議論できてる。先生にも好評でした。議論の材料になったり、新しい可能性を開けたりする。子供たちの反応は、ロボットにできることとできないことがある、ということを学べたことが大きいそう。

討論にロボットを使う実験。プロジェクトディベーターと討論者で戦ったらディベーターが勝ったそう。範囲を絞って知識を構造化できれば説得的なセットは作れるんだね。といっても、まだまだ人手に頼ることになりそう。

第13回

ここまでのまとめとよくある質問への回答。復習事項が多くあまり新しいことがない。

ディープラーニングで囲碁が解けるならビジネス問題も解けるんじゃね?というよくある疑問には、残念でした、無理ですという回答になる。やはり相関関係しかわからないんで、構造化とか意味関連性に非常に弱い。AIはまだまだ人力勝負です。

機械学習と医者の診断について。医者は自分の経験にとても自信があるのでデータマイニングの結果は信用しないようだ。藤井くんを見習ってほしい。データの後処理ってかデータ利用者のリテラシーの問題じゃない?

自動運転でクルマは売れなくなるのか。売れなくなるというより、既存の構造が変わって大手メーカーだけでなく新興企業にチャンスが巡ってくるようになりそうだ。

資本主義は変わるか?という質問には、先生はまだAIのレベルは低い、AIとどう連携するかが問題となると言っています。

シンギュラリティは世界全体に起きるか。今起こっているのは、極めて限定された条件下でしか起きてない。先生はすぐに様々な業務が代替されると考えるのは時期尚早という立場。分野横断的な研究は重要になるだろう。とのこと。

AIの価値は。先生は職業をプロセスに分解して、意味理解は人間がやって、単純計算はAIがやるなど、役割分担が大事になるだろうと予想している。

コンピュータはまだ馬力しか出せない道具にすぎない。AI万能主義の夢物語をぶち上げる人の言うことは信用しないほうがいいね。

第14回

AIシステムと今後の社会について。いままでの講義のまとめが多い。

全体的に、AIが人間にとって代わるというのは間違いで、AIをどのように人間が活用していくかを考えよということを言っている。人間が得意なこととAIが得意なことは違う。AIって名前で議論しているけど結局、昔からロボットやらコンピュータやらについて言われてたことと一緒だよね。DLするなら一番大事なのはデータの質ということも、これまでの講義と一緒。

いいAIと悪いAIの話。ロボット三原則と同じように、倫理的な面から、AIにも開発上のガイドラインが必要ということ。悪いAIがネットワーク上で検出されたら、自動的に取り締まるAIポリスも考えられるけど、それも学習用データの質がなかなか、難しそうな話。中国の金盾って絶対AI使ってると思うんですけど、アルゴリズムが知りたいですね。軍事AIも面白そうですが、仮想の戦争するならデータとかルールとかのレギュレーションが大変そうですね。現実にはレギュレーションもないわけだし、手続きを統一するのは無理。まだまだ難しいだろう。

2018年、政府が提言したAI8原則?では、AIを人間中心にせよ、教育を充実せよ、などの原則があるそう。できるから作るのではだめ。人間中心というのは、漠然としてよくわからない(第15回でやるらしい)。悪意をもったAI=悪いプログラムなんで結局昔と何も変わらん。。データサイエンスは大学生の必須科目になりそう(大したことやらないと思うけど)。

AIの開発のためには知識の構造化、定義の明確化、インターフェースの充実、それから楽しいことが重要。これもいままでのソフトウェア開発と同じに見える。

第15回

AI国家戦略について。AIを経済発展につなげる。どうやって?

AI推進すれば10年程度で効果が出てくるらしい。マジで?IT革命みたいなもん?楽観的にすぎるとおもうけど。

主要国のAI戦略。アメリカではAIに優先的にお金出すんだって。でも予算は不明。GAFAが主導だから?

中国は国指導。特に自動運転に力入れてる。深圳がシリコンバレー化してるらしい。中国は医師が少なく、AI診療所が期待されている。写真とって薬ももらう。コンビニみたいですね。ただ中国ははまだ基礎研究のレベル低いみたい。2017年現在の話だけど。一兆円以上の金が投入されるらしく今後一気に発展しそう。中国の有名企業はBATHというらしい。バイドゥ、アリババ、テンセント、ファーウェイかな。半国有企業みたいなもんなんで強いっすね。

ヨーロッパ。EUでは12兆円投入して開発するらしい。イギリスでは医療、早期がん発見。ドイツではラーニングシステム(教育?)など幅広く。日本と連携して人間中心の開発をするらしいが抽象的でよくわからん。

日本。現実と仮想空間を統合する(ARみたいなもん?)ソサエティ5.0を推進。5.0みたいなの好きだね。

人間中心のAI原則について。AIのリテラシーを高める。悪用したり過度に依存しない。技術者は人文科学の素養も高める。プロファイリングの保護について。2019年8月リクナビが学生の内定辞退率を販売する事件があった。これはダメ。公正の原則。大企業にデータが独占される。これはどうしようもなさそう。アカウンタビリティ、透明性の原則。2018年10月、アマゾンが男性を優先した事件。機械学習に使った履歴書が男性のものが多かったから。データの質の問題。

日本では25万人〜50万人AI技術者を育成するらしいよ。少々勉強するくらいじゃダメだね。

AI兵器。自動で人を殺傷する兵器は禁止しましょう、という動きがある。

おわり。先生方ありがとうございました。