自動微分の機械学習系での応用は分かるという話で、せっかくなので一番簡単な線形回帰でも使って試してみることに。例としては、Rでお馴染みのgaltonのデータを使う。これは、リンク先にも書いてあるけど、Galtonさんが1885に両親の身長と子供の身長の関係を分析したデータセットで、928サンプルが含まれている。RのUsingRパッケージに含まれているので、これをRで以下のようにして、galton.csvに保存しておく。FALSE)せっかくなので、Rで線形回帰をして散布図上にプロットしておく。コードを使おうかと思ったけれど、Hackageにekmettプロダクトのadパッケージがあったので、それを使うことに。バージョンは3.4を使う。いえば、先日開催されていたekmett勉強会でも、@nebutalabという方がadの紹介をしていた。最急降下法で、grad関数で自動微分して勾配を求めて、それを使って最急降下法するコードを自分で書こうと思ったら、ちょうど都合の良いことにgradientDescentという関数が用意されていた。これを使うことにして書いてみたのが以下のコード。gradientDescentには普通に目的関数costと初期値を引き渡しているだけで、勾配を計算するための関数などを全く引き渡していないことに注目。[8.886169628000305e-2,0.9952459827149522]全然収束しない。