chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

ゼロから作るDeepLearning2

RNNの作成に入る前に、ゼロDL本(1)の復習をまずやっています。前回、俺NNを作った時に、交差エントロピーがよくわからず、分からないままに置いといて実装だけやった。改めて、ゼロDL(2)で冒頭の復習ページ読んでみてやっぱり分からず。。交差エントロピーの式だけ見ても意味分からないので、他の人の解説記事を探してみる。

クロスエントロピーとは、情報量の期待値(情報量に確率を掛け算してΣ)
なぜ情報量を表すのにlogを使うのか??

情報量の意味と対数関数を使う理由
http://mathtrain.jp/johoryo

■参考URL
いっきに Python に詳しくなるサイト様
交差エントロピーの導出
http://nihaoshijie.hatenadiary.jp/entry/2017/04/26/062304

情報理論を視覚的に理解する (3/4)
https://postd.cc/visual-information-theory-3/

クッキーの日記様、「雑記: 交差エントロピーって何」
http://cookie-box.hatenablog.com/entry/2017/05/07/121607

そもそも、、条件付き確率からしてあまりよくわからない。機械学習と確率は密接な繋がりだが。。避けて通って来た負の遺産。。

ZOZOタウンで注文したカッターシャツ(作成中)


計測結果:

首周り:33.5cm / 肩幅:40cm / 胸囲:82cm
腕の長さ: 左52.9cm,右53.6cm / 身丈:45.6cm



注文時の指定(基本的にお任せで調整なし)
オックスフォードシャツ(パターンオーダー)/ブルー [MEN] \3900

首まわり:39cm(最適) / 肩幅:40cm(最適) / 胸囲:100cm(最適)
 袖丈:59cm(最適) / 着丈:68cm(最適) / 手首:20cm(最適)


宇治の茶畑へ行ってみた

抹茶が好きで、家でもよく飲みますが、実際にお茶を作られている現場には行った事がない。住んでる地域は大阪の西の端で、まぁ宇治に近いけど機会がないとなかなか行けない。そんな折、「海外からのお客さんを茶畑に連れて行くのだ」と子供が言ったので、子供と一緒に宇治の茶畑に下見に行った。
茶畑は細い農道しかなく、車で入っていくのは基本的に無理なので、茶畑のエリアの入り口の観光協会のような所に車を置かせてもらって、そこから歩きました。今回行ったのは、宇治田原町湯屋谷のお茶畑。
車を置かせてもらった湯屋谷会館(きれいな建物は「宗円交遊館 やんたん」らしい。)

途中、あまり案内板もなく、不安になりながら山道を歩くと突然開けた場所に出て、斜面一面の茶畑に到着。多分、大福谷の茶畑

ちょっと道を戻って、永谷宗円氏の生誕地に方に向かってみる。
永谷氏の生誕地の見学は土日しかだめなようであった。あまり詳しくは分からず。

近くにある神社(茶宗明神社)

Garminで記録した今回の行程(宇治田原町湯屋谷地区)。ぐるっと周って3.4K、結構暑くてヘロヘロになりました。

かなり狭い道ですが、林道を南下すると、和束(わづか)町に抜けられるので、車に乗って、和束町にも行ってみた。林道を走っていると山の斜面に茶畑が。。

自分の土産に、和束町の茶葉で作った日本紅茶を買った。最初に日本紅茶を飲んだ時はかなり慣れない味でしたが、何度か飲むうちに、これはこれで美味しいと感じるようになり、好きな味になりました。しかし、、手作りのためか日本紅茶は結構高いです。

お茶の産地である宇治は茶畑があちこちに点在しており、広範囲に広がっていて、道がかなり狭い、あまり観光地化されていない等、アクセスの方法と、どのエリアに行くのか?段取りを考えてから行かないと、何を見に行ったのか??となってしまうかもしれません。今の季節は暑いだけで、茶摘みのシーズンでもないので、とりたてて、産地ならではの体験は無いように思います。ですが、、自分としては、茶畑を近くで見ることができ、緑に囲まれた林道を歩けたので十分満足でした。今回車で移動しましたが、道はかなり狭いです。
宇治田原(湯屋谷地区)は深い山の中に茶畑がある感じですが、和束町は開けたエリアに点々と茶畑がある感じです。車で行った場合に移動しやすいのは、和束町のお茶畑と思いました。あとは、、どの茶園に行きたいか?どの名勝を訪れたいかという目的次第でしょうか。

観光地化されていないのは嬉しくもあり、農家の方や茶師の方と話す機会もなく物足りなさもありという印象です。茶摘みの時期はもっと大勢の方で賑やかなのかもしれません。

■ご参考URL
宇治田原町さんぽ
https://kyoto.graphic.co.jp/pickup/kotabi/ujitawara/

宇治田原観光マップDLサイト
http://www.town.ujitawara.kyoto.jp/sightseeing/pam/p01.html

runtime library等を介さずmicro:bitを素で走らせてみる(半分妄想)

micor:bitは教育用のワンボードコンピュータで、多くの開発用言語が提供されている。特に、Pythonでさくさくと組めるがありがたい。だけど、、Pythonだとメモリ空間がパツパツで?bluetoothのライブラリがもう乗らないらしい。bluetooth(BLE)を使いたい場合はJavascriptを選ぶ必要がある。そこは残念。だったら、Pythonとかよくできた上等なインタプリタを使わず、また、何層にもなっている、ランタイムライブラリも使わず、素*1でハード直叩きで動かしたらどうなのか?
内蔵されているメインのマイコンは、Nordic SemiconductorのnRF51822で、フラッシュ:256KB、RAM:16KBと広大?なメモリ空間が使える。。はず。。
今作ってる俺VTLがコンパクトに作れたら、micro:bitに乗せて、あれこれ動かしてみたいが。。どうなることか。。続ける意味があるかどうかは、今のmicro:bitに搭載されている、Pythonインタプリタ+ランタイムライブラリよりも俺VTLがコンパクトに作れるかどうか(サイズで負けたら置き換える意味なし)。さらに、、最後まで飽きずに続けられるかどうかが課題。。

Wikiを見ていたら、すでにmicro:bit用Forthもあるらしい。Forthもなかなかお茶目な言語だけど、、micro:bitでForthを使う人いるのだろうか。。VTLもさらにキワモノなのだが。こんなことやって何の意味があるのか。。ふと我に返る。。しかし他にやることもないし。。(リカレントネットニューラルワークのスクラッチテーマもあるが、簡単に取り組むには自分の頭のレベルとしては超難しい。。だから。。少しずつ時間をかけて壁を崩す必要あり。。)

■補足
ランタイムを使わずにハードじか叩きと書いてるけど、BLEを動かすには正しいプロトコルが必要で、さすがにそれにはランタイムライブラリのお世話になる必要あり。だから、、Lチカとか、I2C経由で加速度センサーの値読むとかその程度なら、ライブラリに頼らず素で組めるけど、通信をしたいなら、最低、Nordic nRF51822 SDKのレイヤーは入れる必要があると思う。自分で書いておきながらすでに自己矛盾だが。。まぁ仕事じゃないから自己矛盾もOK
ライブラリ使いながらBLEを動かすとかなり勉強になるのだろうなーーと思いつつ、、

■追記
以下のJELLYWARE様のBLE超入門を読んでると、ライブラリの苦労はおいといて、BLEってのは、使うだけならめちゃ簡単なのか??と思い始めて、、だったら最低限のランタイムは入れてBLE通信させてみるか。。と。。いきなり方針転換。
http://jellyware.jp/kurage/bluejelly/ble_guide.html

■開発環境構築
Interface誌(2018/6 P82)を参考に、Segger Embedded Studioをインストールして、簡単なサンプルを走らせてみた。左の画面が開発統合環境(IDE)のEmbedded Studioで、プロジェクトの作成・ビルド・デバッグが可能。個人利用なら無料、SeggerのサイトからDLできる。

Seggerのサイトで、J-Linkの最新版モジュールリリースと、それに合わせて、micro:bit用のLEDブリンクサンプルが付いていたのでそれを走らせてみた。

ちなみに、、単なるLEDブリンクサンプルの場合、スタートアップが0.9K、メインのコードが0.1Kで、コード領域は合計1KB程度に収まっているようである。ただ、デバッグ用のライブラリも組み込まれているようだけど、そちらはサイズがちと分からず。
ご参考:
最初、デバッガとJ-LINK(micro:bit)との接続時、下記のエラーが出て正常に接続できなかった。

Segger Failed connect to target
no idcode detected

どうもこれはツール間のバージョン不整合によるもののようで、原因を切り分けようと、JLINKツール(JLink_Windows_V632i.exe)をインストールした際に、V6.31i of J-Link Software(DLL V6.32i)に更新しますとメッセージが出て、バージョンが更新された後、接続エラーは発生しなくなった。この教訓として、ツール類はすべて最新に揃えること。

■ご参考URL
micro:bitの回路図
https://github.com/bbcmicrobit/hardware

nRF51822のまとめサイト
https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822
nRF51822ダウンロードまとめ
https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822#Downloads

nRF51822の仕様書(ダウンロードされます)
Product Specification v3.3
https://www.nordicsemi.com/eng/nordic/download_resource/62726/14/45133233/13358
nRF51 Series Reference Manual Version 3.0
https://www.nordicsemi.com/eng/nordic/download_resource/62725/13/73681728/13233

SDK(softdevice) DLリンク
https://www.nordicsemi.com/eng/nordic/download_resource/53724/11/69706129/95150

SeggerのIDEダウンロードサイト
https://www.segger.com/products/development-tools/embedded-studio/

micro:bit用J-Link最新版DLサイト(お試しプロジェクト(Lチカ)もあり)
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/bbc-microbit-j-link-upgrade/

getting_started_ses.pdf
http://infocenter.nordicsemi.com/pdf/getting_started_ses.pdf

さすがにマイコンの仕様書だけ見ながらI/Oを叩くのはつらすぎるので、、SDKのサンプルをちゃっかり参照。。(チートというやつでしょうか)
http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.0.0%2Findex.html&cp=4_0_0

BLEの説明資料(よくまとまっている印象)
https://www.slideshare.net/edy555/ble-deospart1

*1:Interface誌だとベアメタルプログラミングと書いているけど。。ベアメタルってクラウド化に対して物理ハード直結(昔の仮想化レイヤーなしの構成)という意味で使われ始めたと理解していて、ライブラリを使わないプログラミングがベアメタルプログラミングなのか??ちょっと疑問が

ついに出た!「ゼロから作るDeepLearning2」!

待ちに待った「ゼロからDeepLearning」の第2弾、言語処理編(RNN等)を入手。さすがに中身を確認せずアマゾンでポチる勇気はないので、本屋(ジュンク堂)で中身をパラパラっと見てやっぱり買った。「ゼロから作るDeepLearning」(長いのでゼロDL1本)はモノクロ印刷だったが、ゼロDL2本ではカラーになっていて、見やすいかも知れないが、全体的に線が細い(ゆえに老眼気味の自分には読むのが辛い)。
ゼロDL1本で勉強した時は、旧来型のニューラルネット(誤差逆伝搬まで)をPythonで作ったところで、俺NNの開発が終わった(飽きた)。この理由は、ゼロDL1本に描かれた畳み込みの章を読んで、人間の視覚のモデル化で、人が見て分かるものがコンピュータでも識別できるようになったのね。。という感じで自分としてはワクワクする程ではなかったので、畳み込みレイヤーを作るモチベーションが上がらなかったため。
一方、ゼロDL2本で取り上げられているRNNは過去の経験に基づきNNが新しい文書なり、シンボルの新しいシーケンスを作り出してくれると理解しており、自分としてはRNNに創作活動をやらせることに非常に興味があります。ゼロDL2本をしっかり理解して俺RNNを作って、文書生成や音楽生成をやらせたいと思っています。自分でスクラッチから作ってみてRNNの能力や限界が分かるとまた飽きて開発を中断してしまうのかもしれませんが。。。
そんなこんなで、期待に胸膨らせたゼロDL2本ですが、、ちょっと読んでる限り、内容が結構難しい。ゼロDL1本と比べて、2段階ぐらい難易度が上がってるような。行間をしっかり追わないと理解がついていけない印象。。まぁ自分としてはRNNが最後の技術習得テーマと思っていますが(今55歳)。。
ちなみに、ジュンク堂ではオライリーフェアやってるのか、オライリー本を買えば、オライリーノベルティグッズ(オライリーイラストノート)を貰えます。イラストが独特で嬉しいのかどうかのか、、人それぞれの価値観ではありますが。。興味があればどうぞ。
一応アマゾンへのリンクも貼り付けておきます。

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

楽譜を書くためにカリグラフィーのペンを購入

自分は音楽系はかなりヘタですが、、例のエアロフォンの練習用に楽譜が必要で、耳コピ―したり、他人の楽譜を見たりして、吹きやすいように楽譜を作ってます。ボールペンで音符かいてもまぁいいけど、どうせなら、専用のペンで書くのが良かろうと思いました。楽譜用の万年筆はえらく高いので、カリグラフィー用のペンで代用。自分が買ったのはラミーのJOYというカリグラフィー用のペンで、ペン幅は1.1mmのタイプ。

カリグラフィー用のペンはペン先が幅広になっていて、縦に動かす場合、横に動かす場合で、描いた線の幅が大きく変化するので、流麗な筆記体が描けるという仕組み。楽譜でも、四分音符とか八分音符やら、ト音記号やら、休符やらで、太い線、細い線が必要なので、カリグラフィーの要領で描くと見やすい楽譜になる。。はず。

ペン幅の選び方について説明した記事があって、楽譜用のペンのペン幅は、楽譜の幅の半分のサイズを選ぶと書きやすいとあった。自分が使ってる楽譜は幅が2mmなので、半分の1.1mmを指定した訳ですが、、実際に線を書いてみると、0.6mmぐらいになるようでした。まぁ太すぎて音符がはみ出すよりは細い方がいいわけですが、細いために何度もグリグリ音符を塗る必要があり、音符を書く効率が上がらない。まぁ素人が趣味でやってるのだから、それも良しと

ペンを縦や横に動かして、カリグラフィー的に描いてみましたが、ペン幅が狭いのであまりメリハリは出ません。もう一つ上のペン幅でもよかったかも。

ペンにも慣れたので、アルトサックスで吹きやすいように、勝手にオレオレ転調した、ラピュタの「君をのせて」の楽譜を作ってみた。ちなみに、、左の楽譜はホ長調になっていますが、これはシャープ記号の写し間違いです。すみません。オレオレ転調として正しいのは、ヘ長調(Bに♭)です。

網戸の戸車を交換

網戸の動きが悪くて引きずって無理やり開け閉めする状態になった。最初、戸車がレールから外れているのかと思ってレールに乗せなおしても、渋い動きは改善されなかった。そこで、網戸を外して戸車をよく見ると、戸車が片減りしてるのが分かった。何かの拍子で回らなくなってから、ずっと削られつづけていたようだった。というわけで、、戸車のパーツを買って取り換えることにした。
交換用の戸車部品を発注。戸車はいろんな種類があるのですが、、自分はたまたまAmazonで販売されていたので購入できた(商品名は、「共栄 純正部品 網戸戸車 偏芯用 網戸-006 左右1セット」)。もし戸車にパーツNoが刻印されていれば、そのパーツNoでググれば交換用パーツが手に入るはず。もし刻印されていない場合は、Googleで、”戸車 網戸”等のキーワードで画像検索して、同じ形のが見つかればそこから辿れると思います。

今回交換する戸車は左右別パーツになっているので、指定されたL/Rに従って交換する。

網戸をはずすには、網戸の上の方についている留め具のネジを緩めて、留め具を下に下げると、外せる

戸車のネジは二つあって、上側(写真では左側)が固定用のネジ。これを外すと戸車パーツが外せる。下側(写真では右側)は戸車の高さ調整用のネジ。右回りに回すと戸車が下がり(網戸自体は上に上がる)、左向きに回すと戸車が上がる(網戸自体は下に下がる)

固定用のネジを緩めて戸車を外す。

Lと書かれた戸車は左用なので、、室内からみて左側の戸車と入れ替える。

同じくRは室内から見て右側の戸車と入れ替える。

高さ調整は、アルミの下限と車の位置が同じ高さになるぐらいにした。(まぁ気持ちの問題ですが)

戸車を交換して動かしてみると、いままでギギギーと無理やり開けていた網戸が軽々と動くようになり、気持ちもすっきりした。