Kaggleに挑戦-27
Peking University/Baidu - Autonomous Driving
Can you predict vehicle angle in different settings?
*1月21日の締め切りに向けて、お手本のプログラムコードを理解し、動かし、性能向上を図る。
*貧弱とはいえ、ようやく、計算環境が整った。
・昨夜から今朝にかけて、10エポック走らせてみたら、極端な過学習が生じていた。その形は、UNetの模式図にそっくりだ。
・とりあえず、5エポックのデータが欲しいので、再計算する。ここで、エラー発生。10エポック走らせたノートのコピーをとって、エポックを5に変更してkernelリセット&ランにしたので、エラーは生じる筈がないと思っていたのでショックだった。
*ここで、タスクマネージャーが大活躍。なんと、GPUのメモリー使用量が3.6GBに跳ね上がって停止していたのだ。Kernelをリセットしても、1.8GBも残っている。これは、コピー前のノートの1.8GBだ。2つのノートは独立していて、コピー後のノートをリスタートしても、コピー前のノートの1.8GBはGPUを占有したままだったのだ。
*タスクマネージャーは、常時表示させよう!
<雑感1>
*自動運転の分野では、速くて正確なモデルが必要とされている。早くなければ使えない。解析対象は動画だ。運転席あるいは車載カメラから見える、時々刻々と変わる交通状況と背景にある風景の中にある物体を検出して、安全に通行するために認識すべきものを素早く正しく認識し、車の方向と速度を適切に制御するシステムに伝えなければならない。
・このコンペは、どの部分に相当するのだろうか。
<雑感2>
*APTPS2019の上位入賞者のコメント、リコメントを見ていて思ったのは、画像の前処理の問題である。画像を与えた時に、その画像を認識しやすいように前処理するのは、ヒトが画像を正しく読み取るために、明度や彩度やコントラストを調整しているのと同じように重要なことであるが、そこで使われる手法が、従来の画像処理技術の延長にすぎないところに、何か、検討すべき余地があるように感じた。ヒトが介入している前処理の少なくともその一部は、DNNもやっているのではないかと感じている。
*DNNを学び始めた頃は、DNNに人間の知的活動の産物を足してやれば良いのではないかと単純に思っていたが、最近は、DNNにはヒトが思っている以上の機能が備わっている、あるいは、備えさせることができるのではないかと感じている。
*DNNが驚きをもって迎えられた最大の理由、従来手法との最も大きな違いは、DNNが、問題と答えから解き方を学んでいるかのごとく機能していることであろう。
・従来のコンピュータは、解き方を明示的にプログラムして、その通りに結果を出すことだった。機械学習の大半もその中に含まれる。DNN以外の機械学習は、従来のコンピュータプログラムと何も違わない。膨大なデータを使って統計的処理をしているに過ぎない、と、勝手に思っている。
・そのDNNの最も優れた能力を減じてしまうのが、ヒトが介入して、入力データに人為的に手を加えてしまうことのような気がしている。
<雑感3>
*しっくりこないな。
・自動運転関係のDNNにより物体を認識したとする。ヒトとマネキンを検出したとする。どちらかに衝突することが避けられない場合、どちらを避けるべきかをDNNに判断させるには、どのような学習が有効だろうか。まずは、ヒトとマネキンを正しく判断させる方法があるかどうか。
・コマーシャルに出てくる障害物への衝突を避ける緊急ブレーキのテスト、あれに違和感を感じる。疑似的な物体でテストして見せているけど、何を学ばせているのだろうか。地面に車の絵が描かれていても緊急ブレーキは作動するのだろうか。カメラだと、逆光に弱いけど、絞りとかフィルターとか方法はあるだろうに。コストの問題か。
・そもそも、自動運転車って、誰のためのもので、どう使うのかな。
・自動運転は、真剣に取り組むべき課題なのだろうか。ハンドル握れなくなってから、自動運転車に乗りたいと思うだろうか。
・安全サポート、無事故実現のための開発を急ぐべきだろう。
・飲酒運転とか、煽り運転とか、危険運転をさせない車の開発の方が優先度は高いであろう。速度に見合った車間距離になるような仕組みを強制的に取り付けるとか。
・アルファ碁:韓国のプロ棋士Lee Sedol九段が引退する原因の1つになっているらしい。アルファ碁の4勝1敗で、その1敗は、アルファ碁の混乱?によるものと判断したらしい。アルファ碁を「打ち負かすのは不可能」と判断したらしい。
・チェス、将棋、囲碁でアルファゼロが最強となり、ヒトとの公式の対戦は殆どなくなっているようだ。このソフトのどこかに知能とよべるものが存在しているのだろうか。
*optimizerやlrいじりだけでは、空しくなる。
*Loss関数を見直そう。
*いろんな条件でプログラムを走らせていたので、混乱してしまった。
・Anaconda3で走らせているプログラム(KS2バージョン)は、テスト的にFocal lossを組み込んだものだった。
・今から、Anaconda3で走らせるソフトのベースを決めて、再スタートだ。
・KS4:width=512, batch=4, Adam, lr=0.001, step=3, epoch=5, FLなし
<雑談>
・ヒトの知能というけれど、99%は、まねる、繰り返す、機能じゃないのか。
・知能とは、まねることに端を発した、膨大なる繰り返しのなせるわざである。繰り返しはとても重要で、ヒトが何かを学ぶときには、どれだけ繰り返せるか、単純作業にどれだけ熱中できるかが重要であって、これが知能の正体ではないのか。その次にくるのが、トライアンドエラーの繰り返しかな。まねることを繰り返し、次は、少し違ったやり方に挑んでは失敗することを繰り返すのか。失敗は失敗ではなく次のトライのレベルを引き上げる方向に働くようになる。
・DNNはまさに、繰り返し計算、膨大な繰り返し計算である。何かに近づくための。誤差が大きくなったり小さくなったりしながら、全体として収束していく。どこまでも収束していくが、収束することが最終目的ではない。
・ヒトでは、学習の結果は、テストで試され、さらには、基礎学力となって、その蓄積が、様々な分野の専門知識を得るためのベースになる。
・DNNにおいても、学習済みのDNNが、別の用途に転用されている。データ量が少なく過学習に陥りやすい場合には効果的とされているが、非常に気になる分野である。学習に用いるデータの質と量、アノテーションの質などによって転用する場合の効果が異なってきそうな気がするが、学習済みのDNNは、従来の知識データベースの代わりになるような気がする。
・学習済みDNNの利用価値を計測する一般的な方法はあるのだろうか。
・音声の学習済みDNNというものは、あるのだろうか。ヒトの声をサンプリングして波形解析して、様々なヒトの音声の波形を解析しておけば、・・・。ボイスチェンジャーくらいは簡単にできそうだが、犯罪に使われそうでこわい。
・画像認識は、医療応用や、自動運転に限らず、工場などで異物検査や、不良品、良品検査に使われているが、DNNが、画像の「意味」を認識しているかどうかということを、本気で考える必要はないのかもしれないが、どうなのか。
・自然言語処理は、画像認識や音声認識とは全く違った次元でとらえなければならないのではないかと思っている。自然言語処理こそ、人工知能を考えるうえで、最も重要ではないかと思う。
・ヒトは言語をどのようにして学ぶか。
・幼稚園児:自分の名前、ヒトの名前、物の名前、はいといいえ、童話の文章の繰り返し、歩く、走る、遊ぶ、~をしよう、おなかがすいた、
・言葉が必要な場面:日々の生活では、言葉が無くてもすむかな。夜寝るときに、翌日の予定を考えて、起きる時間を決める、あるいは確認する、あるいは、明日から何時に起きよう、とか決める。このとき、頭の中で言葉が発せられている。
・朝起きると、1日のスケジュールを確認したり、やろうと思っていたことについて、思い出したり、ノートを見て確認したり、これらはすべて言葉を必要とする。
・学校では、1日中、生徒に向かって先生が話しかけるか、本を読むか、板書を写すかしている。言葉の洪水の中で生活しているわけだ。
・読み書きを身に着けることがヒトとして成長することであり、知的能力の源であるとすれば、人工知能には、人間にとっての言葉に相当するものが必要となろう。
・ヒトの知能の根本がことばであり、言葉を使って考えることであるとしたら、人工知能の根本は何であり、それを使って考えることを、どのようにしたら実現できるだろうか。
・ヒトの知能の設計図があれば、それをベースに、人工知能を設計すればよい。
・抽象的で考えられない。
・このコンペの目的に対してヒトはどう対処するか。
*F. Chollet氏は、今我々がやっていることは、認識の自動化であって、インテリジェンスではないとつぶやいている。「Our field isn't quite "artificial intelligence" -- it's "cognitive automation": the encoding and operationalization of human-generated abstractions / behaviors / skills. The "intelligence" label is a category error 」by F. Chollet
・DNNを使って、Deep Learningすることを、cognitive automationと言いかえているわけだが、それで何かが明らかになるのでしょうか。それはintelligensのcategoryには入らない、と言うことによって、何か新たな世界が見えてくるのでしょうか。
・認識は、intelligenceの構成要素の1つではないのだろうか。自動化が何を指しているのかわからないが、認識のプロセスをDNNによって獲得し、その獲得した機能を現実の局面に適用することを、automationと表現しているのだろうか。よくわからん。コンピュータにやらせること自体がすべて自動化のような気もするが、よくわからん。
・生命の生命たるゆえんは自律していることであり、その自律した生命体であるヒトにしかintelligenceは存在しえないということなのでしょうか。
・まあ、ここでは、DNNは、AIの急先鋒だということでいいんじゃないかな。
・artificial intelligenceの開発に向かってがんばってみようかなっと。
*次は、Focal lossの式を論文通りにつくって動かす。
・「Objects as Points」の式(1)の通りにしたつもり。
*残念ながら、収束しなかった。損失関数として機能しなかった。
*次の損失関数を探そう。
・公開されているnotebookに、Focal lossらしき式が入っていたりするのだが、結果に結びついているのかまではわからない。
・Focal lossらしきものを、いろいろ試してみよう。
つづく(今日は落書きだらけになってしまった)