はてなキーワード: 数値計算とは
就職活動真っ只中です。
先日、ある会社(なんちゃらシステムズとかなんちゃらソリューション等のグループのIT事業を担う会社)から祈られた後に電話で不採用理由を教えていただいたのですが、その際に「院生にしては技術力が低すぎる」とのご指摘がありました。
採用担当の方が考える"院生相応の技術力"とはどのようなレベルなのかを電話口で聞きそびれてしまったのですが、それから数日間ずっと院生相応の技術力とはどのようなものなのか考え続けています。(私自身は研究室配属後にプログラミングを始め、主に数値計算や深層学習を勉強してきました。コードを読んだり書いたりは一通りできます。)
そこで、増田(今日はエイプリルフールなのかなぜか増田が吉田になる)の皆様が考える"院生相応の技術力"についてご教示願いたいです。(採用担当の方に直接連絡すりゃいいじゃんってツッコミはなしでお願いします。)
“院生相応の技術力”ってプログラミングスキルのことだと思っていましたが確かに「研究でこんなプログラム書きました」って言う方が相手にも伝わりやすいですよね、勉強になりました。ありがとうございます。
例えば、サンプリング定理(標本化定理)を知らなければ音声の録音も圧縮も理解できないのは当たり前。
だから、大学で情報科、もしくは電子工学や機械工学を履修するのは無駄ではない。
日本の専門学校だと給与が安い仕事の即戦力になるようなカリキュラムになりがちだから。
(専門学校が扱う職業のラインナップを見ればそれは明らかだと思う
乱暴に一言で表現するなら、この世のすべてはビット、つまり0と1で表現できてしまう。
例えば小数点以下無限に数字が続くような数字は、言い換えれば無限に情報が必要ということになる。
メモリは有限だし、たった1つのそんな感じの数字を記憶するためにどんな巨大なメモリも埋まってしまうのでは意味がない。
だから、コンピュータで浮動小数点を表現する場合、どこかで足を切らなければならない。
それによって、紙で計算すれば問題ないことが、コンピュータではおかしな結果になることがある。
しかし、これを知っていなければ科学計算はもちろん、銀行のようなお金の計算もおかしな結果になってしまう。
大学で数値計算の授業を取得するのは退屈だが、これを理解してなければ社会に出ても間違ったコードを書いてしまう。
というか、私も大学在籍中に間違ったコードを書いたことが何回かあるw
その原因は根源的で哲学みたいな話で、
世の中のほとんどの物事には正解がないとか、そういう話にしかならない。
良いテキストはあるわけだけど、それを読むべきタイミングもあるし、万人向けが自分に向いてるとも限らない。
本なら何冊かはドブに捨てるつもりで買うしかない
みんなが良いから読めという本も、なんとなく自分にはこれがいいんじゃないか、も買うしかない
買って家でじっくり読んで、途中でナニコレ?みたいな本だったら後悔するかもしれないけど、世の中そういうもんだから。
自分はレシピ通りに作らないでヒントにしかしないタイプなのだけど、
焼く、炒める、煮る、蒸す、みたいな方法だけ理解していれば味付けなんて適当でいいのだ。
なんらかの魚があったとして、それは食べられる魚だと分かっているが調理方法はまったく知らなかったとする。
どうするか?
とりあえず、まず口に入れられるサイズに切るべきだろう。
口に入れられないと食事にならんのだから、魚を切って骨を取る。
さばき方もググれない状況なのだから、もう適当に切断していくしかない。
鱗も大味で取るしかない。
ググらないと、とんでもないほど非効率的なさばき方をしている可能性があるが、とにかく食えればいいのだ。
腐らせては意味がない。
日本の刺身みたいな生で食べる文化はイヌイットではないが、漁師が船の上で食べることとも関係しているように思う。
何が言いたいかというと、生食は現代文明のロジスティクスは保存技術の成せるわざであって、料理の基本は何でも熱を通すべきなのだ。
数学科ではなく、工業で使える数学と統計を多くの技術者が使いこなせていないのを、AIブームで感じる。
流行っていたWebプログラミングに比重を置くと、そもそも勉強しなくてもプログラミングはできる状況があり、優先度が低いと捉えられていたのではないか。
もちろん全く使えないことはないが、大学の教科書で数式の変形はできるが、現実の問題とリンクしていない。
既に知れ渡っている手法については数式も含め理解できるが、現実問題を解くときに対処しきれない。
数式でモデルを作れたとして、プログラミングに落とし込む所にハードルがある。
各プログラミング言語として、速度の遅くならないベストプラクティスは多くの人が興味を持つが、
bfloat16といったのが自分達で作れない。
政府は、欧州、中国の科学政策は収集、論文数などの統計は取っているが、内容までは踏み込めていない。
中国の科学力が伸びてきているといったときに、大学でどこまでの教育水準なのか、といった情報はない。
アメリカの大学院で使う洋書は、日本の大学院でも使うが、中国については情報はない。
中国語が最先端の部分が出てきているのに危機感も、学ぶ姿勢もない。
議論するとしても、論文数、研究費、人口のグラフを眺める所から深くはならない。
英語サイトは外国人雇用用ページなので、自動翻訳を使いながらでも見てみることをお勧めする。
製造業はJISがあるが、ソフトウェアについても開発手法など標準化を進めたほうが良かったのではないか。
アメリカの組織力に勝てないのに、国内企業間の過当競争でつぶれてしまう。
〇〇ペイは競争によって技術力が向上しただろうか。広告合戦で終わった。
消費税対応としても、増税による消費減を打ち消すだけの効果はなかった。支払い方法が増えても、集客は増えない。
結局、支払いプロセスが複雑になり、事業主の負担が増え、一時的に対応端末で売り上げは伸びるが将来の更新費を賄えない。
マニュアル人間が悪いと言われているが、知識を多くの人に広めるためにはマニュアル化が必要だ。
Matlabのマニュアルのように、複数の機能を使う時、どのように組み合わせれば目的が達せられるかといったのは重要だ。
北欧でポスドク(fellowship)ポジションを得た経緯と準備をまとめました。こちらの記事(https://www.notion.so/Facebook-London-13743da603ce4632bd9f96672faa0d74)を参考に書かせていただきました。特定回避のため少しぼやかした表現で書いたところがあります、ご了承ください。
私は今年のはじめにオランダ語圏の大学でPhDを取得し、その後も欧州に留まろうと就活をしていました。PhDの就活は、博論執筆やディフェンスと就活期間がかぶるものだと思いますが、そのあたりの事情も書いていこうと思います。私の専攻は数値計算・解析の一分野です。「数値解析」と言っても実際には何も数値計算をしない研究があり、また「数値計算」と言っても何も数学的な裏付けのない研究があります(どちらもそれ自体がネガティブなことだとは思いません)。ただ私は自分の強みとして、この2つ両方をやっていることを打ち出して就活をしました。
2-5月 公募、面接(オンライン)、オンラインセミナー講演など
オランダ2
ドイツ1
です。面接に呼ばれたのが2箇所、そのどちらも面接の数日後にオファーをもらいました。
当たり前ですが、ポスドクをやるために最も大事な要件はPhDを取得していることです。私は昨年10月に今年1月のディフェンスが急遽決まったため、大慌てで博論を書くことになりました。私の大学では外部の教授2人+内部の教授3-4人からなるexamination committeeがあり、 博論提出→(4週間:committeeの教授が博論を読む)→private defense (プレゼン15分+committeeによる質問2時間)→(3週間:博論修正、博論印刷)→public defense(プレゼン50分+質問1時間半) というスケジュールでした。私のディフェンスが急遽決まったのはこのcommitteeの教授たちのスケジュールによるものでした。
9月頃からアカデミア求人サイトを見ていたのですが、実際に応募しだしたのは11月からでした。周りのポスドクの人や教授に使えるリンクなどtipsを聞いておくと良いと思います。私の場合は例えば、mathjob.org, SIAM mailing list, euro-math-soc, NA digestなどをこまめにチェックしていました。
私の分野はあまり大きな分野ではないため、私のプロファイル・専門に合う求人は、多くて月に2-3件くらいしかみつかりませんでしたが、そこに力を入れて応募していました。公募求人のページは締切後に消えてしまうので、(面接の前に見返すなどのために)ローカルに保存しておきました。
私はCVとカバーレターの雛形を用意し、それぞれの公募に合わせて少し変えていきました。どちらも教授や周りの人に読んでもらってコメントをもらいました。ここでスペルミスや文法ミスがあると、後から見返してしんどい気持ちになります。
これは指導教員と副指導教員にお願いしていました。プロセスとしては、自分が応募する→相手方が自分に興味を持つ→相手方が自分のレファレンス先にレコメンデーションレターを書くよう要請する、というもの(が多数派だと思う)で、あらかじめ指導教員たちに「〜〜から連絡あるかもしれないから、見落とさないように」お願いしなければなりません。
面接は二回しか経験していませんがどちらもオファーをもらいました。聞かれたことは、そのポジションにおける自分の強み・弱み、自分の研究成果、教育の経験などでした。どちらも英語での面接でしたが、英語が公用語の国ではないため、ある程度の「社会に溶け込もうというモチベーション」を見せるために終わりの挨拶をその国の言葉でするなど、印象を良くするように努めました。
PhD取得後、すぐにコロナの広がりがやってきました。就活真っ只中の私としてはとても薄暗い気持ちになったのを覚えています。連絡を取っていた他大学の教授から突然メールが返ってこなくなったり、応募していたポジションの選考プロセスが突然止まるなどの事態が起こりました。
ポスドクは自分の研究活動を通したコネで決まることがわりと多いかと思います。もしそれで決まるのであれば、そうするに越したことはありませんが、私の場合は土地の制約やタイミングからそれだけではうまく決まりませんでした。そのため、全くつながりのない教授・大学にある程度の説得力を持って応募することが必要でした。私が応募したものの中にはあとから「ああデキ公募だったんだな」とわかるものもありましたが、これは世界中どこでも起こりうるものだと思って割り切りました。
選考プロセスはほとんどの場合、応募者側からすると不透明ですが、スウェーデンとノルウェーでは透明性を重視しているのか、現在の段階や全応募者の評価シートまで応募者に公開しているものもありました。クオリファイされた24人の応募者全員の名前、年齢や出身大学、業績、プロジェクトとのマッチング評価などが書かれたドキュメントは読み応えがありました。
twitterなどを見ていても思いますが、博士課程は思うように結果が出なかったり、悩みを共有できる人がいなくて孤独だったりと閉塞感が出がちだと思います。私も博士号取得後の数ヶ月、無職期間を経験し気が塞いだこともありました。この閉塞感がくせ者で、そのせいでパフォーマンスが落ちたり更に人と話さなくなるなどの悪循環なども生まれると思います。ただ、自分が思うよりも状況は悪くない、ということをどうやってか自分に客観的に説得できると、この閉塞感も緩和されるんじゃないかと思います。
ソフト業界の人間じゃないのだけど、なんとか業務改善したいと思い、なんちゃってプログラミングはしてる。
Qiitaやブログなども見てるのだけど、なかなか自分の業界に合わない。
数値計算用のプログラミングやってる人なんて増えてないし、ビジュアライズするソフトもそんなに良くなってない。
Windowsしか選択肢がなかった頃は、Windowsプログラミングやってる人が多くてMSDNのよくわからない表現も、親切な人が解説してくれていた。
C++でFPGA触るプログラム書いてインタフェースをPythonなんてのは少数派なのはわかるのだけど。ドライバー周りはブラックボックス増えたように感じる。
CERNのROOT使ってグラフ描いているのも少数派に感じる。
使いにくいのだけど、ソフト業界では話題にならないから、もう改善はされないんだろうなと思ってる。
自分で直せと言われるだろうが、自分の抱えている問題を解くためだけのプログラムを組んできたので、そんなスキルはない。
機械学習が流行って、PandasやJuliaで計算する所まではよかったが、ビジュアライズが自分と合わなかった。
ヴァイオリンプロットや数字が記入されていないヒートマップなどを見ると、派手で多くの人にウケそうだけど、
議論しようとすると数値で議論できなくて誤魔化されている感じがする。
ビッグデータ必要だと言いつつ、グラフを描く段階になって、そんな大きなデータプロットできないとなって、突き放された感じがしてしまう。
Webのサーバーに登録している多くのユーザーの特徴を整理するには良いのだろうけど、
機械学習や深層学習がもてはやされて結構立つが第三次AIブームは今のところ下火になる様子はない。
機械学習をプログラミングしようとしたり学ぼうとするとほぼPython一択しかない。numpyとかの数値計算ライブラリが整ってた背景から機械学習系のフレームワークの多くはPythonである。入門書や学習書も当然Python。
それより前、なのかは知らないがPythonは「プログラミング入門者に最適」というブランディングも定着している。
私はPythonが好きになれない。嫌いとまで言うと言い過ぎだが、好んでつかいたいとは思わない。インデントベースでシンタックスを記述しなければいけないというのがもうまず第一にそして最も合わない。
まあ細かい理由についてはどうでもいいんだが。( zen of python )はわりと好きだ。
話が逸れたが、なんであんな堅苦しい貧弱な言語でやらないといけないのかと思うと機械学習に食指が動かない。それで仕事で困るということもないのではあるが。はやっているので勉強してみようかな、という私のミーハー心をいつも瞬時に打ち砕く。
勝手にジョークぶちあげて揚げ足取られたら話の筋道をそらすのは如何な論法かと思うけどね、ジョークならジョークで完結させろよと言いたいが、「それはジョークだじゃあ話を元に戻そう」、これでいいのでは?それとも子供に対してCPUのことを計算してくれる装置ですよと語りかけるが如く丁寧懇切に連立方程式の解き方からBLASの存在まで説明しろとおっしゃるのかな?
それは筋が通らない話だと思うし議論する気があるなら最低限・・そうだな大学がならう数値計算とか並列計算機の授業のレジュメをさらっと目を通すぐらいはしたらどうでしょうか?
https://www.cspp.cc.u-tokyo.ac.jp/hanawa/class/sp20180925.pdf
うーむHPCに対するアプローチは二通りあって情報工学的に計算機科学の一環(つまりスパコンを作る側)として見るか、1科学者としてのシミュレーションを行う場、仮想実験場(スパコンを使う側)としてる見る場合の2つのアプローチがあると思うのだけど・・・PEZY-SCを搭載したシステムに関しては前者、計算機科学の成果としてみるべきシステムだと思うのよ、これの成果としては「非GPUで超メニーコアシステムを実現すると共に高効率なシステムを構築することに成功した」って言う一つの事実に集約されると思う。
でここで高効率なシステムの基準はなんなのかとというと「HPL」と言うベンチマークですわな、HPL=LINPACKと言う認識で話を進行させるけど、HPLは本来連立方程式の求解を行う速度を競うベンチマークであって、これを皆が手放しで賞賛してるのはおかしいと言う批判が存在する。
これは一理あってすべての科学技術計算の性能向上に寄与する指標とは言いがたいからだ。
じゃあなんでこれが推されている居るかというと理由は何個かあるけど連立方程式の解を求める必要のある技術計算はとても多いから、昔からやっててデーターが揃ってるから
ここまででHPLが重要視されている理由がご理解いただけると幸いなんだけど・・じゃあ具体的に連立方程式を使用する場面を示せよと言われると腐るほどあってどれを示せばいいのかわあらんのですが・・
http://www.cs.kyoto-u.ac.jp/wp-content/uploads/2012/07/05hori.pdf
まああんまり人様の研究をあれこれ紹介して間違った説明しても申し訳ないので中身には触れないでおくけど実際に連立方程式は最もシェア率が高い問題であると言う認識は持ってくれると
話が早い
まあさっきのXeonでいいじゃんって話も一理あって性能が低くてもx86_64時代のコードそのまま使いまわせるし、さっきあげたユーザー側から見た時楽ちんであるのは事実だ。
なによりintel C++/Fortranコンパイラと言うクソ便利なものがあってライセンス料払うとある程度勝手に高速化してくれたりするし使いまわせるコードも多い
まあPEZY-SCよりXeonのほうが計算機を研究してるわけじゃない物理学者とかの各種研究者エンジニアからすれば魅力的な点が多いのは事実だと思う
だからと言って計算機科学としての計算機の純粋な性能向上を主とする研究・開発成果を邪険にしていいわけないしまた別の問題、確かに商業ベースで考えたとき
これらの問題をどうにかしないといけないのは事実だし改善して行かねばならないのはPEZYやエクサスケーラーの各位に残された課題であるのは間違いない。
だが少なくともまだこの世に銀の弾丸となりうる万能システムは存在しない。
もしあるなら俺にくれ あといい加減なこと言ってたらゴメン、強いひとに殴ってもらうと筋トレになる