2019-12-18

JAZZとコントラバスが少しだけわかってきた

こんにちはhagino3000です。この記事はpyspa Advent Calendar 2019の17日目です。

今年は新しい挑戦としてコントラバスとJAZZを始めました。コントラバスはオーケストラの右端で弾かれる大きな楽器です、和製英語でウッドベースと呼ばれたりもします。JAZZは全く聴いてこなかったので完全に未知の領域です。この分野は素人なのです、本当に。

普段は職場でゲーム音楽のバンドアンサンブルを演っているのですが、Super Mario Odyssayの都市の国のテーマのウォーキングベースを弾きたくなったのがきっかけでした。新しい楽器を始めるのは20年ぶりなのもあり、練習や普段の取り組み方について改めて考え直しました。ソフトウェアエンジニアとしての訓練方法と似た部分もあり、多くの気付きがありました。

楽器スクールに通う

ビギナー段階において人から習う事の効率の良さは業務で身に染みています。自宅の近所にコントラバスでJAZZが習えるスクールがあったので決めました。レッスンでは課題曲のベースフレーズ作成が宿題として出されて、対面レッスンでそれを弾いてフレーズ及び演奏について指導を受けています。枯葉やBlue Bossaといった曲からスタートしました。

ソロフレーズ作成は自由度が高いので、左手のポジション範囲とピッチの制約が課されると捗ります。オルタードテンション(♭9, #9, #11, ♭13)も最初は無しでコードトーンのみで作りました。やはり自由度の高いタスクは難しいです。

スクールは常にコンフォートゾーンの外側になるような負荷が与えられる所が気にいっています。

JAZZが少しだけわかった

今までは「楽譜を暗譜してその通りに弾く」もしくは「楽譜を見ながらそのまま弾く」だったのが、他のパートと合わせた時にどちらも上手くいきません。正解は「コード進行を覚えてアドリブで弾く」なのでしょう。フレーズ作成とは別にコード進行だけ見て弾く練習もやるようにしました。iReal Proが非常に便利です。

レッスンでは一音一音「何故ここでこの音を選んだのか、どの音に向かっているのか」と質問されるので、自分が何の音を弾いているのか意識するようになりました。ただ、進行上は使える筈の#11thが自分の耳には外して聴こえたりするので理論と感覚の乖離がまだあるなと。

レッスン課題曲について様々な人の演奏を聴くように指導されるのでYouTubeとSpotifyをヘビーに使っています。スタンダードナンバーは多くの人にカバーされているから聴き比べが面白い。JAZZのプレイヤーに関する知識ゼロでしたがMichel Camiloのパーカッションとの絡み方やEddie Higginsのキャッチーさに惹かれています。難しいのはMiles Davisです、原曲成分が全く聴きとれなかったりする。やっぱりJAZZはわからない。

多くのプレイヤーの演奏を聴く事に関してはymotongpoo氏がSlack channelに延々と貼り続けてくれた事もあり非常に助かりました。

ブルースそしてBack to the Future

JAZZはブルースの影響を受けているのでブルースも練習しました。3コードのブルース進行。好きな映画で言うとバック・トゥ・ザ・フューチャー1でマーティが「This is a blues riff in 'B', watch me for the changes, and try and keep up, okay?」と指示するだけでバンドがチャックベリーのJohnny B. Goodeを演れてしまうシーンがあるのですが、謎が解けました。確かにコードは3つ、I・IV・Vしか使わないから弾けるんですね。


練習のスタイルを変えた

学生時代とは違ってがむしゃらに長時間練習する事が不可能になりました。自分が練習するだけでなく自分の子供の指導をする立場にもなったので効率の良い練習方法を知る必要が出てきました。ソフトウェアエンジニアに「達人プログラマー」や「エンジニアの知的生産術」といった本がある様に、演奏家向けにも同様の文献が存在します。「成功する音楽家の新習慣」という本が日々の練習方法にはじまり、本番への望み方、肉体の故障を防ぐ方法まで幅広いトピックを扱っています。
ここから実践しているのが「細かく規則正しく練習する」事です。ランチの予定が無い日は昼休みに職場の楽器エリアで練習しています。

教本は「シマンドル」長く参照されているクラシックな物を選びました。アルコ(弓弾き)前提の本ですが、ピチカート(指弾き)でも譜面は再現できます。好みの問題でしょうが、技術書の選び方に通じる物があります。

参考にしている2冊

テクノロジーの進歩を享受する

フレーズ作成の際にコード進行はiReal Proで即座に参照できるし、ソロフレーズであれば例えば「2-5-1リック」でGoogle検索すると参考になる定番フレーズが山の様にヒットします。YousicianのBassコースは音ゲーの様に五線譜が流れてくるので譜読みの練習ができます。知の高速道路が整備されている事を改めて実感しました。

楽譜と音源作成にはmusescoreを使っています。musescoreはスタンダードナンバーであれば公開されたスコアが大抵見つかるので、それを元に編集するとベースフレーズ打ちこみ用スコアがさくっと作れます。

自宅練習時の床の振動防止はロードバイクのローラー台用の防振材を流用しています。コントラバスは床に突き刺して部屋を鳴らす楽器なのでサイレント楽器といえども床が振動して他の部屋に音が伝わるからです。練習後の筋肉のケアにはマッサージガン。腕が故障すると年単位で動かせなくなるのが人生経験としてあるので入念に。使える物はとにかく使っていくスタイル。

まとめ

未知のジャンルに触れる事で音楽の幅を広げる良い機会となりました。あとは練習あるのみ。社外の演奏会にも出ていけると良いですね。


このエントリーをはてなブックマークに追加

2019-12-15

AtCoderはじめました

AtCoderというか蟻本の輪読会が社内で始まったのでこっそり若者に混じっている。

モチベーション

グラフアルゴリズムの概観とその実装の感覚を叩きこんでおきたいのがある。最近はGraph Embedding等のグラフを用いた手法によく出会うが自分の中に基礎が無いのでなかなか理解できた気にならない。自分のブログを漁ると10年前に最短経路問題をJavaScriptで解いているので、その手の活動を再開したとも言える。

進捗

以下のページを参考に、本の内容に対応するAtCoderの問題を解きつつ

まずはAtCoder過去問の4つをSubmit


テストコードが書けないコードは許しがたいのでclassにしてあるが、書いている内に depth_first_search は dfs と書きたくなるし if __name__ == "__main__": のお決まりの一文すら書くのが面倒くさくなってきた。人間は変わってしまうのか。

現状苦痛なのはコードを提出した後にRuntime Errorという結果だけが得られて、その時の入力が何だったかわからない点。仕事なら「ログを仕込んで次回に備えよう」となるがそうはいかない。比較的新しいコンテストは入力がDropboxに置いてあって安心した。

書いたコードを残すGitHubリポジトリ
https://github.com/hagino3000/study-programming-contest-challenge-book
進捗メモ
https://scrapbox.io/tnishibayashi/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%B3%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8%E3%83%96%E3%83%83%E3%82%AF%E7%AC%AC2%E7%89%88

このエントリーをはてなブックマークに追加

2019-12-01

IBIS2019でポスター発表しました

IBISは機械学習の研究会です。今年は11月20〜23日の名古屋開催でした。
今回はポスター発表にアドネットワークのクリック単価決定方策を持っていきました。プロダクト開発が本業なので外部発表や論文を書く事はメインタスクでは無いのですが、実験の過程で得られた結果など発表できる物は外に出していきたいです。バンディットアルゴリズムのポスター発表も数件あり、オンライン意思決定の方策に詳しい先生方の意見が得られる貴重な機会でもあります。
様子です。

その他講演メモ

  • グラフ文法を用いたグラフ生成
    • 分子グラフ、例えばH20だと(H⇔O⇔H) を学習したい
    • 安定性などの制約を満たすグラフを生成したい
      • ハード制約とソフト制約の組みあわせ
    • 大学でやったタンパク質の構造解析を思い出しつつ聞いた
    • 形式言語で記述してグラフにして学習という流れが面白い
  • 回帰による再帰型ニューラルネットワークからの重み付きオートマトンの抽出
    • RNNの動作を再現するWeighted Finite Automataを抽出する研究があるとのこと
    • 重み付き有限オートマトンに置換すると推論の計算コストが低くてふるまいが明快になるメリットがある
    • ネット広告分野だと「RNNでコンバージョン予測モデル作った」という報告は多々あるものの、何をどう学習したかわからないし説明性厳しいでしょと思っていたので興味をそそる内容だった
    • しかし重み付き有限オートマトンを知らなかったので後で調べた
  • 隣接代数と双対平坦構造を用いた学習
    • 難しかったがIBISではよくあること
  • Data-Efficient Reinforcement Learning of Mechanical Control Systems
    • 強化学習
    • 不確実性の予測を使って学習すると上手くいく
    • ガウシンアンプロセスだから計算コストすごい高いはずだけど、少ない試行回数の間に学習できてしまえば勝ちっぽい
    • ニューラルネットはregressionに向いてないと考えてるとの事
  • Problems with CNNs by Hinton先生
    • 「CNN is bad」
    • CNNは人間の様に学習していないからadversarial examplesの問題がある
    • 何が写っているか考慮しない、背景を学習してしまっていたりする
    • 心理学的なアプローチ
      • 図形を表現する時はスケーリングされるし、共通のメンタルモデルがある
      • 三角形や四角形という基本図形の組合せで認識する
    • Cupsules (2019)
      • Capsules for triangles, and squares 星座っぽい所が検出できる
      • 星座生成モデルとか
    • 人間が物をどうやって見ているか、という観点を使って学習するといいよという話で面白かった
  • サンプリングによるデータ駆動科学
    • 根源的な構造はわからなくてもいい、機能を獲得したい
      • 工学的なアプローチだなー
  • データ駆動科学の立場からみた物質科学と情報科学の接点
    • 材料科学 → XXに使える材料が無いか追求する
    • 物質科学 → なぜXは透明なのか理屈を追求する
    • 初日の有機化学とはがらりと変わって無機科学。グラフでは無く原子の繰り返し構造に
    • 繰り返しパターン中の原子の位置を文字列で表現してパターンマッチ
  • 機械学習に対するソフトウェア工学の技術動向
    • 中の人としてプロダクト開発をしている身からすると契約してPoCやって検収・納品というのを見るとすごい大変に見える
  • 機械学習と知財・契約
    • 外部ベンダーにプロダクトの一部を開発してもらうとしたらどう落し所をつけるか、みたいな事はしばしば考えるのでとても参考になった
    • 完成した成果物を、契約当事者双方がどうのように使えるかを「開発+利用規約」において定めるこのが非常に重要
    • 物体ではない(コピー可能)ので権利帰属よりもどう使うか
    • 知財権を共有にして、利用条件を決めずに進めるのは危険
    • http://ibisml.org/ibis2019/files/2019/12/slide_kakinuma.pdf
  • 継続的改善をし続けるための機械学習基盤の課題
    • MLflow trackingよさそうだった
  • 日本におけるデータサイエンスの現状と今後
    • 滋賀大学データサイエンス学部
      • 日本に統計学部が無いから作った
      • 名前はあれだけど統計学に重点を追いたカリキュラムで自分が入学したい
    • データからの価値創造の流れ
      • 課題が先にあって必要なデータを収集するのが基本
      • データが手元にあってそこから新たな知見をさがすのも有用になりつつある
    • 竹村先生が本当にすごい人だった、尊敬する

あとはインターネットの方々が詳細な聴講メモを残してくださったのでありがたく拝見しています。



このエントリーをはてなブックマークに追加