しんさんのブログ

科学や技術のこと読書のことなど

Windows10にWSL2をインストールする方法

Windows10にWSL2をインストールする方法をメモしておきます

大まかな流れ

Windows10でWSL2を導入するには4つのプロセスが必要です
1. Windowsの設定を変更してWSLと仮想マシンプラットフォームをONにする
2. WSL2用のLinux kernelをダウンロード&Installする
3. WSL2をデフォルトに変更
4. Microsoft Store経由でUbuntuのインストール

Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能から設定を変更する

Linux kernelのインストール
WSL2をデフォルトに変更
> wsl --set-default-version 2
Ubuntuのインストール
エラーが出たので対処

WslRegisterDistribution Failed with error 0x80370102
BIOSの設定を以下のように変更
System Configuration -> Virtualization TechnologyをEnable

使い方メモ

インストールされているLinuxの確認。
PowerShell
> wsl -l -v
distributionを指定して起動
>wsl -d distribution_name
distributionの終了
>wsl -t distribution_name
全てのdistributionを完全に終了
>wsl --shutdown

普段使いはwindows terminalのタブから起動するのが便利です。
windowsからlinuxのファイルにアクセスるには
\\wsl$\distribution_name\

WSLでインストールしたLinuxディストリビューションのアンインストール方法

- 通常のwindowsのアプリと同じやり方でアンインストールできる
- 詳細オプションのリセットでアンインストールせずに初期化もできる。

”待ってました CUDA on WSL 2”でCUDA環境についての解説有ります
  • NVIDIA中の人のこの記事参考になります。

qiita.com

「実践GAN 敵対的生成ネットワークによる深層学習」を読みました

日本語で読めるGANの解説書です。
連休でまとまった時間が取れるので読んでみました。

読み始めるといきなり"GANは汎用人工知能を実現するための重要なステップであると考えられている"という記述がありGANと深層学習の組み合わせがいかに将来の可能性を秘めているかをさらっと語っています。

初めにGANとは何か生成モデルとは何かをオートエンコーダも含め詳細に解説しています。

その後、GANのGANの訓練の難しさとして以下の3つのトピックを取り上げています。

  • モード崩壊
  • 収束の遅さ
  • 過度な汎化

上記の問題点に対する解決法にからめてMin-Max GAN, Non-Saturating GAN, Wasserstein GANなどのGANの初期の研究における非常に重要なトピックが説明されています。
それ以外にも、GANを有効に働かせるために必須の技術であるバッチ正則化や勾配の制約などの手法が解説されています。
GANの応用としてPGGANやCycleGANのようなさらに強力で応用範囲の広い技術の解説がなされています。

GANは非常に強力な生成モデルとして多くの研究がなされているが同時にその危険性についてもしてきされています。
倫理的な問題やあるいはセキュリティーの問題にまで波及するような危険性についても章を費やして説明しています。

発展的な内容として、
Self-Attention GAN
Relativistic GAN
などの比較的最近の話題についても簡単に解説されています。

このように、GANの基本的な解説から出版当時は最先端であったと思われるトピックまで網羅していますのでこれからGANを勉強する人にはお勧めです。
残念な点は、翻訳があまりこなれていなくて日本語が非常にわかりにくいことです。
また、GANの難しさやGANのすごさは実装したコードを実行して試行錯誤する中で実感するものだと思いますので実装は重要なのですが、それに関してはGitHub上のコードとその解説のポインタだけでに留め書籍にコードまで載せる必要はなかったのではないかなと思います。

「認知バイアス 心に潜むふしぎな働き」 鈴木宏昭著を読みました

人が認知する行為にかかわるバイアスについて網羅的にわかりやすくまとめてあります。
人の行動が様々な認知的なバイアスにより意識的あるいは、驚くべきことに全くの無意識に影響を受けているということに驚きました。
ただそのような行動が論理的でないからと言って簡単に結論づけるのではなく、人類の生物としての進化の過程で必然的にそのような認知バイアスを持つようになったということが分かりました。
そういうことを理解したうえで認知バイアスを理解し時にはうまく使うと非常に効果的であるということ、しかし使い方を間違えると恐ろしい結果を引き起こすこともあるとことその両面を知っておかなければならない。

最近盛んにイノベーションという言葉が使われていますが、イノベーションとは無数の既存のアイデアからなっており、突然脈略もなくぱっと浮かんでくるものではなく、無数の既存のアイデアを知らない人、その組み合わせ方を何度も試し失敗を続けたことのない人にイノベーションを期待するのは難しいという部分は100%同意できます。日本企業から画期的なイノベーションが生まれない理由が完璧に説明されています。
失敗を許さない風土、旗を振るが自分では何も手を動かして試行錯誤をしない風土それが原因なのではないかと思います。得てして何か奇抜なもの、人を驚かすようなものをイノベーションととらえがちですがそれでは真のイノベーションは起きないということが認知的な視点からわかりました。

そしてもう一点日本企業が大好きなブレーンストーミングについても、生産性や多様性が全く高まらないことを本書は説明しています。
ブレーンストーミングの有効性を検証する22の実験のすべてが有効性を否定しており、80%の研究で生産性や多様性に対してむしろマイナスの影響を与えることが確認されているということだそうです。
これは私が普段のブレストに感じることとも一致しますが実験的に確かめられているということで自分の思いが正しかったことを確認できました。
生産性や多様性を高めたければ今後はブレーンストーミングはやめたほうがよさそうです。

こうした創造や共同に関するバイアスについて記述した7章、8章だけでも読む価値はあります。
そして、9章で「認知バイアス」に関するメタな考察から、認知バイアスというものがまだ研究途上であることも分かります。

人を対象にした製品やサービスに係る企業人の皆さんに一読をお勧めします。

「Learn or Die 死ぬ気で学べ プリファードネットワークスの挑戦」西川、岡野原著を読みました

プリファードネットワークス(PFN)という会社に対する私のイメージは、優秀なエンジニアや研究者が集まっている謎のスタートアップというものでした。
ディープラーニングという技術に全振りしてその技術で世界を変えてやろうという野心的な事業をしているのがPFNであるということも知っていましたが、そのPFNの生い立ちと現在、そして未来についてファウンダーであり経営者でもある二人の著者が自らの言葉で語っているのが本書です。
タイトルのLearn or Dieは、研究者ならだれもが知っているであろうPublish or Perishにちなんだものなのかと興味を惹かれたことも本書を手に取った理由です。

そしてこの本は、PFNで働く社員への経営者からのメッセージでもあるのかなとも思いました。社員数の非常に少ないスタートアップが徐々に規模が拡大し、複数の異なる事業が立ち上がり始めると、社員数も増え、徐々に求心力が失われたり経営者との直接の対話が減ってきたりします。
そのタイミングで二人の経営者が、自分たちの考え方、将来の会社の在り方を明確に活字にするということに意味があったんだと思います。
同時に、外部に業務を委託しその管理を仕事だと思ったり。社内政治にいそしんだりする日本の大企業のエンジニアこそ"Learn or Die"を実践し、自ら手を動かさないと将来生き残れないぞという強烈なメッセージにも感じました。

本書の記述で非常に共感し気になった部分をメモとして残しておきます。

  • PFNの4つのバリュー
  • 世界中のあらゆる場所で活躍するロボットの時代が来る
  • パソコンが普及した理由の一つは「デバイスの抽象化」にあったという仮説を立てている。
  • アニメの表現が人とロボットとのやり取りを実現するときに役に立つのではないか
  • 物理的な世界とバーチャルなところの境界がどんどん曖昧になってきてどちらでもいい世界が来るかもしれない
  • 一つの重要なテーマは「メタ学習」だ
  • VC相手だと不毛なやり取りを繰り返したあげく、おそらく最後は爆発して話がなくなっていた
  • 理不尽な論理はいっぱいある。そこに巻き込まれないように徹底的に交渉する。
  • 重要なのはお互い丁寧に接し合うことだ。「お前これやれ!」みたいな言い方、やり方は絶対に許さない。
  • 制御理論を突き詰めたものに対して、強化学習や深層学習ベースのアプローチは全く異なる。
  • 量子コンピュータは注目しているが、現実的に面白い問題を解くところとはまだギャップがある。
  • 自分の経験からしかものが見られない人のことは「経験厨」と呼んでいる

いま、PFNはコアになるプロダクト、収益の柱になり同時にそれを通じて技術を発展させられる事業を生み出そうと苦しんでいる。
PFNがリアルタイムで経験しつつあることは、ひょっとするとGoogle検索エンジンの画期的なアルゴリズム開発からスタートし、それを広告ビジネスへと結びつけて継続的に利益を得ることができるようになる過程なのかもしれないです。

本書からその生々しい苦しみや試行錯誤、そして研究者や技術者の楽園を作るべく奮闘している様子を感じることができます。

readme.mdのテンプレート

GitHubにプロジェクトをあげたときには、必ずreadme.mdを書きますが、毎回その場の思い付きで適当に短く書いしまっています。
これではいかんと思い、何かいいテンプレートはないか探したらわかりやすい解説を見つけましたのでリンクを張っておきます。

cpp-learning.com