Coffee Break Script

モフモフしててニャーと鳴く気まぐれな生き物が好きです。情報を物理で工学するのが専門らしい。

TeXに行番号をつけるTips

久しぶりの更新ですね。

ところでみなさん、論文やレポートは何で書いてるんでしょうか。

Wordでしょうか? マカーはPagesとか使う人もいそうですね。

そういう人はこの記事を読まないでください。

さ、というわけで()TeXのTips紹介です。

共著者に論文をチェックしてもらったり、ジャーナルに投稿して査読してもらう段階(final camera ready原稿ではない段階)では、論文に行番号を入れて「何行目のここが〜」とかチェック/議論しやすくしておく、というのがデキる投稿者の気遣いらしいです。

TeXのよくあるディストリビューション(奥村先生の美文書本の付属CDとか)を入れている人は、おそらくlineno.styというパッケージが入っているはずで、これを使えば基本的にOK。

しかし、数式の入った段落では不具合が生じるらしく、プリアンブルにおまじないが必要になるとのこと。 ということで、

% line numbers
\usepackage{lineno}
\newcommand*\patchAmsMathEnvironmentForLineno[1]{
  \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
  \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
  \renewenvironment{#1}
     {\linenomath\csname old#1\endcsname}
     {\csname oldend#1\endcsname\endlinenomath}}
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{
  \patchAmsMathEnvironmentForLineno{#1}
  \patchAmsMathEnvironmentForLineno{#1*}}
\AtBeginDocument{
\patchBothAmsMathEnvironmentsForLineno{equation}
\patchBothAmsMathEnvironmentsForLineno{align}
\patchBothAmsMathEnvironmentsForLineno{flalign}
\patchBothAmsMathEnvironmentsForLineno{alignat}
\patchBothAmsMathEnvironmentsForLineno{gather}
\patchBothAmsMathEnvironmentsForLineno{multline}
}
\linenumbers

をプリアンブルにコピペしましょう。こうすれば万事解決です。

ではでは。

wing 37

今日はガッツリ内輪の話。 wingとかtsubasaでピンとくる人にしか伝わらないことです。

今年のwingでは、運営にはほぼまったく関与せず、3日目の途中からお手伝い・雑用・ドライバーという形で参加しました。 数年前の参加者だった子たちが運営側で戻っているという、その時点ですでに嬉しい回だったわけだけど、自分にとってもtsubasa歴ちょうど10年目という節目のwingだったので、そこに多少なりとも関われたというのは、また別の感動がありました。

さて、運営状況については…多少、というか直前になるまでバタバタしていて、細かいところまでフォローされてなかったなぁという感じなのですが。それについて、実行委員長のおっさんから「お前からビシッと言ってくれ、俺は怒るだけの体力がもうない」とかいう卑怯で姑息な圧力がかかったので、泣いて馬謖を斬る思いで、スタッフの子に小言を言いました。

でも、例年よりもスタッフ陣がピンピンしていて、夜ゼミに参加したりと楽しんでいたのが印象的でした。あれはかなりいいと思います。というか、「当日は重要項目を再確認・再点検するだけでもうほとんど準備することがなく、スタッフ陣も班長たち並みにふらっと講義とか夜ゼミに参加しにいける」っていうのが理想だと思うんです。 そういう意味では、今回のスタッフの雰囲気はなかなかいいものだったと(外野から見ている限りは)思いました。

ということで、やっと雑感を書くことができました。 もう1ヶ月以上、優に過ぎているけど。

来年のwing38の運営陣募集もかかりましたね。 wing40くらいまではなんとか続くといいけどなぁ。

家庭教師への依頼ワード・トップスリー

大学に入学してアルバイト先を選ぶためにバイト情報誌を眺めて、まず驚いたのは仙台の破格に安い人件費。仕送りを断っていたので生活費を稼ぐことが第一だったから、必然的に時給のよい塾講師・家庭教師を選んだ。

 

そして大学入学から…あっという間に8年目……

つまり、家庭教師歴も8年目を迎えたというわけである。

 

大手学習塾(YDKのあそこ)を半年ほどでやめたので、教える側のキャリアのほとんどを個人契約の家庭教師として過ごしていることになる。指導した生徒は小学生から高校生まで、のべ8人になる。

 

某トライのような派遣の家庭教師と違って、個人契約の家庭教師というのはあまり実態が知られていないらしい。

口コミじゃない場合はたいてい、まずは仲介サイトに登録しておいて、家庭教師を探しているご家庭から指名が来るか、もしくは募集している案件に応募する形式になる。そして、諸々の条件が概ね合致した段階で面接を行い、採用・不採用が決まる。

 

僕の場合、面談までいった場合はそのまま採用が決まるケースが100%なんだけど、もちろん、条件交渉の段階(たいていはメールでのやり取り)でボツになる案件もある。

仲介サイトからは、「中学2年生、男子、数学と英語の指導希望、指導日は水曜日の夕方以降を希望」のようなあっさりした情報しかこないので、時給の提示などと合わせて、「どんなところに困っているのか」「家庭教師になにを期待しているのか」をメールで聞くことにしている。

 

今日は、そんな家庭教師の個人契約交渉でよく見かける、
家庭教師への依頼ワード・トップスリー」 を紹介しようと思う。

 

ではではさっそく…ずばり!

 

 1. 「成績を上げたい / 志望校に入れたい」
 2. 「勉強好きにしてほしい」
 3. 「学習習慣を身につけさせたい」

 

 

1つ目の「成績を上げたい」は、分かりやすいというか、まぁそうでしょうねというヤツ。具体的に「ナントカ高校の特進科に合格を!」みたいなものもある。昔、「英検2級に合格させてください」という依頼も受けたことがある。

 

2つ目の「勉強好きにしてほしい」は、特に小・中学生の子によくあるケース。

実はこれが一番難しい。本当に、うまく誘導できるかは子供による。

好奇心旺盛ならばやりようはあるんだけど、勉強と聞いただけで「おっ?おもしろそう?」とすら思えない子も中にはいるので。

 

僕はこの手の話になると、いつも森毅先生のこの動画を思い出す。

少し長いけど、面白いのでぜひ見ていってほしい。

(今日の投稿は半分くらいがこの動画の前座、と言っても過言ではない)

 

youtu.be

 

いやぁ、いいですねぇ。

 

 

そして3つ目の「学習習慣を身につけさせたい」という依頼。

これも非常に多い。

というのも、家庭教師の授業はだいたい週に1, 2回。

塾と併用でもない限り、自宅学習で補ってくださいということになる。

これは保護者サイドも重々承知だから、「自分で勉強する方法を身につけさせてほしい」とか、「自宅学習の習慣を身につけさせてほしい」といった依頼になるのは必然。

 

 

首都圏や近畿など、私立有名校・進学校がひしめく地域は例外として、「進学校といえば公立校」な地方では子供もおっとりしているというか、学校の定期テストでいい点取れればいいや、という発想の子が大半。「あと1点でも多く!」みたいな子は少なくて、いたとしても難関大を目指す高校生くらい。

 

僕も東京出身なので、最初は「え…めっちゃゆるい……こんなんでいいの?」というカルチャーショックを受けていた。最近は、下手に模試の成績で一喜一憂するだけの青春よりも健康的なんじゃないか、なんて思っている。

 

…………オッサンになったもんだ…

 

\オチがそれでいいのか?/

 

 

ではでは。また次回!

「Pythonからはじめる数学入門」買ってみた

スペイン語の入門書を探していたのに、いつの間にかPython本を買っていました。 どうもosaKBです。

その名も Pythonからはじめる数学入門

Pythonからはじめる数学入門

Pythonからはじめる数学入門

純粋なオライリー本ではなく、オライリー・ジャパンが独自に日本語訳版を出版してくれています。 こういう本はあまり見ないので感謝ですね。

ざっと目次だけ紹介すると、

  1. 数を扱う
  2. データをグラフで可視化する
  3. データを統計量で記述する
  4. SymPyで代数と式を計算する
  5. 集合と確率を操作する
  6. 幾何図形とフラクタルを描画する
  7. 初等解析問題を解く

となっています。 普段Pythonを使う時はNumpyばっかりでSymPyはほとんど使わないし、そういう状況ではだいたいMathematicaを使ってしまうので←

これを機に勉強してみよう、と。

せっかくなので、章末問題を解いたらここにアップしていこうかな、とか思ったり思わなかったり。

ざっと目を通した感じ、ほとんどがインタラクティブシェル(Python対話型シェル・IDLE)を例に説明されているので、あまり慣れていない人にも取り組みやすいと思います。 (個人的には、JetBrains社のPyCarmかIntelliJ IDEAの使用をオススメします。まじでいいよ。)

AlphaGoの弱点

巷を賑わせているAlphaGo(アルファ碁)。

 

僕は機械学習とは少し方向性の違う「脳型計算」の従兄弟みたいな分野の研究を

ちょうど今やっているところなので、深層学習とかこの手の話題はよく耳にする。

 

今はどこの業界も「猫も杓子もディープラーニング」状態、

ある人は

まるでティーンエイジャーのセックスのようだ 何がいいのか分からないけど、周りがみんなやってるらしいし自分もやっとくか」

 と評したとかしないとか。(どっかのSlideShareで見かけた気がするんだよね)

 

たしかに目覚ましい成長を遂げていて、確実に成果を挙げている技術なので当然と言えば当然なのだけど、あまり批判的な意見に触れることがない。

……ので、今日は少しネガティブな話をしてみるとしよう。

 

分かりやすいのでAlphaGoを対象にして話していく。

まず、こいつの弱点はシンプルに、

  1. データがなければ何も始まらないこと
  2. イレギュラーに弱いこと
  3. 囲碁しか打てないこと

の3つ。

 

### 神は「教師データよあれ」と言われた

 

AlphaGoについてはもう散々記事が書かれているので詳しく説明する気はないが、

「大量の棋譜を読み込むことで様々な戦略を学習していった」

というのは前提知識にしてもいいと思う。有名な話だよね。うん。

 

機械学習では、こういう風にお手本となるデータを大量に入力することで、最適な選択肢を取るようにトレーニングする。これを「教師あり学習」と呼ぶ。

世の中には「教師なし学習」というものもあるけれど、「これが正解です」と明示的に教えないだけで、結局大量のデータを入力するプロセスは不可欠である。

 

つまり、ざっくらばらんに言えば、

機械学習を使うと「1を聞いて10を知る」ようなシステムを構築することができるけど、それには「1億の関連データを前もって教えておく」必要がある

ということだ。

 

しかも、この「事前入力データ(教師データ)」の質が性能を左右する。

たとえば、AlphaGoに初心者とか素人の棋譜を大量に入れても、プロ棋士に勝てるようになるには、プロの棋譜を使うときの数倍のデータが必要になってくるだろう。

 

だから、キリスト教の神が万物を創造するときに「光あれ」と言葉を用いたように、機械学習で優秀な人工知能を創造したければアダムが「良質なデータあれ」と唱えて用意してやらなければならない。

入力データ選定段階では、確実に人間の知恵(少なくとも現時点では)が関与していないと成立してくれない技術なのである。

 

これが弱点の1つ目。

 

 

### 打たれ弱さ

 

AlphaGoと対局したイ・セドル九段のインタビューをまず見てみよう。

 

記者会見の冒頭、イ・セドル9段は「今回の勝利は非常に大きな価値がある。世界の何ものにも代えがたい」と笑顔で喜びを語った。さらに、記者の質問に対し、これまでの対局を通してアルファ碁の弱点を二つ発見したことを明らかにした。一つ目は、黒(先手)で打つときのほうが、白(後手)よりも苦手なこと。二つ目は思いがけない手に、ミスというほどではないが、それまでに比べわずかに劣った対応をすること。後者について「バグではないか」という。

引用元 : 囲碁AIにイ・セドル9段が初勝利、プログラムの弱点見破った?

 

実際、囲碁を知る人から見ると明らかに凡ミスのような変な手を打っていたらしい。

基本的には線形なシステムだし、最適解ではない解(ローカルミニマム)に落ち込んでしまうということが考えられる。ま、要はイレギュラーに弱い、ということですね。 

 

これが弱点2つ目。

 

 

### 専門バカ

当たり前だけど、AlphaGoは将棋は指せない。

囲碁しか打てない。

しかも、絵を描きながら囲碁を打つとか、ミステリー小説を読みながら囲碁を打つとか、そんな芸当もできない。

 

つまり、与えられたタスクしか、あらかじめ決められた範疇でしか仕事をこなさない。

課題を自分から見つけてくる、とか、そういうこともない。

 

たとえば、なんだろうね。

囲碁を打ってて気がついたんですけど、別に碁石って白黒じゃなくてもよくないですか?もっとカラフルなやつがあったり、ガラスでできてる碁盤だったり、デザイン重視の物もあっていい気がするんですよね。インテリアとしても売れそうじゃないですか?」

みたいな提案(あるいはジョーク)を、AlphaGoはできない。

 

これは「境界問題」と言うのだが、現在の技術では「想定する範囲」を限定してあげないとプログラムが組めないのである。(もしくは、プログラム自体は組めても実用にならないくらい膨大な演算が必要になって、実質できないのと同じ。)

 

これが弱点の3つ目。

 

 

## 機械学習の本質はアルゴリズムの「抽出」に過ぎない。

 

ということで、まとめ。

機械学習すげーぜ、ともてはやされているけど、実は弱点もあるんだよ」

ということがほんのり伝わっていたらOKです。

 

で、じゃぁなんでそんな弱点が残っちゃってるの?と。

それも人工知能で補完してどうにかできちゃうんでしょ?みたいなそこのあなた。

 

いやいや、ちがうんですよ。

機械学習というのは、本質的に、アルゴリズムの「抽出」を自動化しただけなんです。

それだけでも画期的な成果を挙げていることは疑いようのない事実だけど、べつに人工知能アルゴリズムを「創造」しているわけではない。

 

過去から現在に至るまでにに蓄えられたありとあらゆるデータから、人間の指示で求められているものに見合った何かしらを抽出しているだけ。

 

だから、そこをもう一歩乗り越えて、「一度の経験(イベント)で、枝葉末節、下手したら全然関係ないことまで、ありとあらゆることに関する経験値を得る」ような人工知能を作らない限り、シンギュラリティはまだ来ないんじゃないか、と思うわけです。

 

最後に、多少批判的な文を書いてきましたけど、機械学習の技術はすごく面白いし、数学的にも綺麗な構造をもっているものが多いので、個人的に否定的な意見をもっているというわけではないです。

 

むしろ、すべての地球人がさっさと人工知能に仕事を奪われて、何もしなくたって生きていける桃源郷みたいな世の中になればいいと思ってるくらいです。

あ、今度その話も書きましょうかねぇ。

”プログラミング教育”ってなんだか変な感じ

2020年には小学校でプログラミングを必修化する、という噂を耳にした。
なんのこっちゃ。
何を教えるっていうんだか。

 

最近流行りだよね、プログラミング。
某厚切り米国人がNHKで子供向けプログラミング教育番組を始めたり、
千年に一人の美少女がよゐこの有野さんとアルゴリズムの番組してたり、
正月実家でチラッと見ましたけども。

 

子供向けのパソコン教室も人気なんだとか。
小さいうちからプログラミングスキルを習得させましょう、
という動きが広まっているらしい。

 

 

僕はイマイチ感心しないんだよなぁ。

プログラミングスキルってざっくり言えばただの「道具の使い方」なので、
目的次第で使う方向性もまるっきり変わってくるし。

 

アルゴリズムを学ばせることの大切さはたしかにあるんだろうけど、
まだ算数しかできない子たちにやらせても、あまり意味ない気がする。
だったら、中学数学を前倒しにして教えたら?って感じ。

でも、たぶんその目論見は破綻する。

 

 

欧米のプログラミング教育で重要視されているのは、
"Computational Thinking"という「考え方」の部分らしいんだけど。

これは要するにどういうことかというと、

  1. 具体的な問題を抽象化(Abstraction)して、
  2. さらに一定の手続きを自動化(Automation)する

という、2つのAのプロセスなんだって。

 

たしかにこれは重要。超重要。
高度な思考というのは、抽象化によって成り立っていると思うから。

 

でもね、小学生くらいの子たちが一番不得意なのが「抽象化」なのだよ。

足し算の問題をわざわざ「りんご2個とみかん3個で〜」みたいに例えるのは、抽象化のレベルをなるべく下げて、具体的なイメージを持たせやすくするためなんだ。

それほどに、幼いうちは抽象化が苦手。というか、個人差が大きい。

 

だから、抽象的な思考ができるレベルになるまでは、
わざわざプログラミングやアルゴリズムの授業を実施したとしても、
単に「パソコンアレルギーをなくす」くらいの効果しか出ないんじゃないかと思う。

 

日本の学習指導要領は揺り戻しばっかりだからなぁ。
すぐ、また変わるんじゃないですか。

 

それに、2020年頃にはITの有り様もけっこう変わってるはずだし。
IT技術の進歩は、教育体制の整備を待ってはくれないもんね。


【結論】
高校生くらいになったら、Mac買ってJavaScriptあたりから始めたらいいんじゃね?

ファースト ドリップ

はじめまして。

ブログを開設してみました。 身元がバレバレの(隠す気もあまりない)twitterアカウント ( @osaKB ) と紐付けられたブログです。

書く内容はと言えば、「140字じゃ足りねぇや」というものでしょうかね。

ツイッターの補足的な?

まぁ、基本的に面倒くさがりでアタマが空っぽな人間なのでね。

研究対象のこと以外で何日も何週間もジィーっと考えを煮詰めたりとか、そういうことは無理なんで。 ましてや、政治的な、高尚な議論なんてするつもりもないし、わざわざネットで書き散らす性格じゃないんで。 飲みながらあれやこれや話して、次の日になったら「なんの話で盛り上がってたっけ」みたいな程度の、ね。

まぁ、自分の特徴としては、「小中高大+大学院=20年」も学校に通っているというのがあるので、必然的にそちら系の、「教育」とか「勉強・学習」とかの話題が多くなるような気がします。

なんとなぁ〜く。

特に、かれこれ7, 8年ほど家庭教師をしているので、そこで得たノウハウとかを書こうかな。

だんだん自分の研究がメインになってきて、前みたいに何人も掛け持ちしてバリバリ教えるということをしなくなっているんだけど、これまでに自分が教わってきたことはもちろん、自分なりに工夫してきたことにも、どこかのサーバーに負荷をかけるだけの価値はあるかと思えるので。

あまりかしこまった感じにならないように。

ゆる〜くゆる〜く、コーディングの合間、コーヒー片手に息抜きで書くような。

そんなスタイルで続けていければいいなぁと。

というわけで、"Coffee Break Script"ってわけです。

ではでは、どうぞよろしく。