はてなキーワード: SVMとは
とっ散らかった思い出話?で失礼します。
当時はLLMなんて影も形もなく、人工知能といえばなんかちょっと賢いくらいのアルゴリズムをさしていて、
理論的にはニューラルネットワークもSVMもあったものの機械学習が注目されるちょっと前の時代。
(ちなみに設定上はマルチはニューラルネットワークではなく、ニューロネットという似た何か)
今のような計算機もないし、理論的な話もフレーム問題みたいなやる気のない議論しか無く。
とりあえずプログラミングは勉強したものの、なんかちょっと賢いアルゴリズムくらいしか学ぶものがなかった。
機械学習(SVM)が流行ったのが大学に入った頃でこれはと思って飛びついたものの、まぁ大したことはできず。
対話ボットとしてでも再現できればと思っても、まともな生成は夢のまた夢だった。せめて対話の分析ができればと思っても、言葉の意味とか全然扱えない状態で、
対話の分析なんかしても、定型文に近いパターンが扱えるかどうか。当時のペースだと100年経ってもマルチどころか、
イカリヤ(ハンドメイドメイ)も厳しい状況で、よく博士課程なんか進んだな。この当時から、こつこつ対話の研究を
続けていた方々には、本当に頭が下がります。で、対話は難しすぎるので、目先を変えたタスクで博士課程を取る。
このころには、長瀬源五郎になれないということには気が付いてきてはいたものの、誕生に関わる可能性のある
博士とった後くらいで、 Mikolov がLLMの遠い祖先といってもよいRNNLM とみんな大好き word2vecを作った。
この時点ではまだ、言葉の意味をベクトルで表せるって程度で、その後のBERTくらいまではまだ性能があがってすごいくらいで、
まだマルチっぽいものも作れないしまだまだ遠いな、とちょっと高を括っていた。そろそろ対話を研究する時期じゃないかとは思いつつも、手は動かず。
そして気が付いたら、GPT-2 が簡単なコードを書けるようになっていた。この時点で、なぜ他のものは投げ捨てて飛びつけなかったか、
今でもちょっと考える。その時点ではチェリーピッキング的なものでも、精度の問題ならいずれ勝手に解決されることは分かっていたのになぁ。
で、結局今はLLMのプロンプトエンジニア。これはこれで面白いのだけど・・・、マルチが作りたかったはずなのに、随分離れたとこに流れ着いてしまった。
今となってはマルチ風に会話できる対話ボットぐらいすぐに作れるんだが・・・、なんかもうそういうことじゃないんだよな。。。
例えOpenAIに転職してたとしても、マルチに近づけるわけではないんだが。なんか、大作の構想練り続けてうん十年みたいだなー。
後編
行列はVBAなんかじゃ無理っぽいし、なんかプログラミング言語を覚えようと決める。
とりあえず両方試そうということで、RのためにRとRstudioをインストール。
プログラミングはなんかを製作する目標がないと挫折すると聞いていたので。
深層学習というものが流行ってると聞いて、ちょっと触りを勉強したくなる。
この本は面白かったので、深層学習を目標にプログラミングを覚えよう!
後になって、これはとんでもない間違いだったことに気づく。深層学習と機械学習の違いも判らないまま、RよりPythonを先に触ることに。
教本にしたのはこちら。
「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」
途中まではまあなんとか。
微分って便利だな。行列計算できるの便利だなっていうところまでいったが、クラスという概念が理解できず、途中からハテナが浮かんで読み進められず。
うん、もうちょっと易しい本を探そうと思って手に取ったのが
「独学プログラマー Python言語の基本から仕事のやり方まで」
なんとか読了。自信をつける。
実は、いまだにコマンドプロンプトとパワーシェルとbashの違いが分かってない。
つづいてPyQに2か月くらい登録してみる。
https://pyq.jp/
なかなかPythonが楽しくなってきたが、クラス意味が今一つ掴めないままいったん中断。
この辺で、自分は統計に興味があってもプログラミングに興味がないんじゃないかということに気づく。
なんだかんだもがきながら、PythonもRもモノにならず、日常のちょっとした計算やグラフを作ったりはExcelを使い続ける日々が続く。
あるいは、Excelで成形して、検定かけやすい形式にしてRで検定するとか。
Rに触れてなかったな、Rは完全に独学。「こんなことやりたいなぁ、ググってみるか、ほうなるほど」って感じ。
そんなさなか、放送大学で「Rで学ぶ確率統計」という講義があるのを知り、さっそく入学して受講。
なかなか面白かったし、PythonばっかりでRあんまり触ってなかったからいい刺激になった。
恥ずかしながら、負の二項分布やガンマ分布ってよう知らんかった。
しかし、講義は楽しかったがなにか書けるようになったかというとそんなことはなく、依然として基本はExcel。
まあ、実際csvじゃなく、手書きのデータとかをExcelに打ち込んだりする程度なんでPythonやRを使うまでもなかったというのもあるんだけど。
「Excelパワーピボット 7つのステップでデータ集計・分析を「自動化」する」
パワークエリを覚えたらピボット形式のExcelファイルとか、セルの結合が多用されたExcelファイルを、成形加工するのが非常に楽になった。
しかも、同じフォーマットで記録されてるデータならフォルダにぶち込んで一気にまとめ上げることも可能!
控えめにいって神!
としばらくパワークエリを礼賛してたのだけど、各ステップはPythonのpandasやRのdplyrでも出来ることに気づく。というか最初から気づけ。
こりゃ、一気に覚えちまおう、統計というより、データの前処理だなと思ってUdemyでRの動画を買ってみた。
AIエンジニアが教えるRとtidyverseによるデータの前処理講座
https://www.udemy.com/course/r-tidyverse-preprocess/
すっかりR信者になる。
それまで教本を呼んでもdplyrの便利さが今一つわからなかったのに、パワークエリで具体的にモノを作ると、dplyrに翻訳したら、すいすい。スピード10倍。
便利さにようやく気付く。
そんで、pandasに翻訳したらどうなんだろ?と思ったらもっと速いw
すごいなPython。
Rへの入信はたった数週間。再びPythonに興味。
さて、ゼロから作るディープラーニングを再開しようと思ったけれども、そもそも、機械学習をすっ飛ばして深層学習って無茶だったと反省し、まずは機械学習に。
機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム- (Machine Learning)
で、この本がすごい。
5章あるんだけど、機械学習のアルゴリズムは5章だけなんだなw
それまでは何に割かれてるんだって?数式の証明とか、便利な計算法、例えばニュートン法とかラグランジュ未定乗数法とかw
こんだけ引っ張っておいて、いよいよ本番の第5章もゴリゴリ数式をスクリプトに落とし込んでいってるのに、「これは学習のためでscikit-learnっての使えばたった1行」っていう無慈悲w
いや、ほんと数学の勉強になったし、こうやってゴリゴリやるとなんのためにクラスというものが存在するのかようやくわかった。
線形代数って便利なんだなと。行列をスカラー値のように何の気なしに扱えるようになると、あの頃苦しんでいた実験計画法、タグチメソッド、今読み直したら別の印象があるんじゃないかなと思うようになったり。
この本を読む途中、「マンガでわかる統計学因子分析編」で学んだことが理解の助けになった。
なんたる僥倖。
線形回帰、リッジ回帰、SVM、PCA、k-means、クラスター分析、一気に手札が増えた。
Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析
実験計画法って、fisherの古典的なやつ、ラテン方格に割り付けて、ってやつかと思ったら、線形代数使えればもうなんでもありなのな。
これ、すごいな。
機械学習と実験計画法がここでつながるとか、控えめにいって最高だな。
まだ読了してないので、また後日。
この冬に予定されている院試受験者と、来年度以降の受験者のために内容をメモしておく。
前提として私の背景は下記となる
研究科のページから教員一覧に目を通して、やりたい研究に近い研究室で学生ウェルカム感のあるウェブページをもつ先生に連絡した。
そのあとオープンキャンパスに出席し、そこでの座談会で事前に連絡させてもらった先生と話したが、どうも研究テーマが研究室とミスマッチ感がでていたので、その先生に他の先生を紹介してもらった。最終的には、紹介してもらった先生を第一希望で受験申し込みをおこなった。
4つの項目について2ページ以内で書かないといけない。
いわゆる"研究計画書"・"論文"みたいな仰々しいフォーマットではなく、見出しはフォント大きく、太字にして、必要なところはリスト形式にして、と、口頭試問前提の読みやすさ重視のフォーマットにした。
例えるならGitHubのREADMEのようなフォーマットで書いた。といっても下記については一般的なレポート記法に従った
半ページ強を使った。内容としてはざっくり下記の3点を記載した。
半ページ弱使った。卒業研究はどうも書きづらかったので、幸い長いこと取り組んでいるプロジェクト(研究ではない)があり、そのプロジェクトについて、研究ぽいとこだけ抽出して概略を書いた。
2行程度書いた。博士後期課程行きたいけど、そのときの金銭事情にもよるから未定ということを書いた。
2枚目丸々1ページを使った。
背景・方法・成果で1/4ずつ、加えて残りの1/4に研究テーマの概略図(パワポ1枚みたいな)を載せた。
下手なこと書いて口頭試問で痛い目に合わないことを意識して、とにかく専門用語・具体的なアルゴリズム名は避けるようにした。
統計・機械学習なら、平均・分散までしか使わない。SVM・ディープラーニングなんて言葉は避ける。可能な限り高校生でも知っていそうな言葉だけ使うようにした。そうすると参考文献を書く必要もなくなり全体的にスッキリした体裁になった。といいつつ専門用語まったくないのも薄っぺらい気がしたので、確実に解説できる1語だけを記載して、その1語には参考文献の番号振って、ページ末端に小さいフォントで参考文献を記載した。
あと、提案手法の評価方法だけはすごい意識した。このあたりは"研究計画書の書き方"で、グーグル検索してもらったほうが詳しい。
会場は大きめのホールで受験生は30名ほど。多くの受験生はスーツだったが、Tシャツジーンズの受験生もいた。試験当日の座席配置と合格発表の番号を見るに私服の受験生も受かっていた。
問題は2問でた。
必答1問 A4 1枚
"研究科で何を学んで何に活かすか"みたいなテーマだった。私は具体的な志望業界があるので、データ分析に関する研究をして、その業界の研究職でこういう仕事がしたいということを書いた。
選択1問 A4 1枚
私は2を選んだ。具体的なシチュエーションを想定したうえで、下記のような観点で、ストーリーを作った。AIビジネス/ビッグデータビジネスの事例の本で読んだことを項目にあてはめて回答した。
待合室として教室に移動させられる。1人30分で、口頭試問は3会場あって1人ずつ呼ばれる。試験時間は当日に案内があった。一番遅い人は4時間待ちだと思う。待合室は比較的出入り自由。待合室にスタッフがいるわけでもない。自分の試験時間に待合室にいればよいと案内あったが、途中、試験時間の時間変更があった。受験生は各々スマホいじったり、トイレにたったり、おそらく外出もしていた。すごい暇なのでスマホの充電は十分にしていったほうがいいと思う。
試験会場は少し狭めの教室。希望をだした先生+3~4名の先生方が長机に並んでいて、その前にパイプ椅子がおかれているような形式。先生方はおそらくコース混合だったと思う。
希望の先生から、研究計画書に書いた統計用語から発展した内容の用語について説明できるかという質問があり、教室の黒板を使って説明した。たまたま口頭試問対策でヤマはってた質問だったが、対策していなければ答えられない用語だった。必修講義の統計基礎レベルではでてこない用語で、統計応用レベルの教科書でこんなこと書いてたなという内容を説明した。といっても決して"専門書"レベルの範囲ではないので、私が勉強不足なだけかもしれない。分からないことは分からないで通して、しどろもどろになりつつ自己採点100点満点中40点ぐらいの説明になった
そのあと他の先生方も含めて、いろいろ質問を浴びせられた、なぜこの研究科を選んだのかとか、なぜこのテーマをやるのか、どうやるのかとか面接に近い感じ、研究計画書に書いた、これまでの研究・希望進路についてはとくに聞かれなかった。終始、なごやかな雰囲気ではあった。
こんな雑多なメモだが、役に立つと嬉しい。
お前は浅学非才無能怠惰であるが、親の教育の賜物で国立大学に入れた。
しかしデータサイエンティストになりたいなどと夢を見たせいでお前のスキルはボロボロである。まず、お前の学部で学ぶ、経済学であるが、経済学はマクロ経済学もミクロ経済学もテスト問題を解けるようにしただけで本質は掴めず、データサイエンスに少しでも近づこうと取った計量経済学の講義はコーディングのテストは余裕でクリアしたが、面接で理論を答えられず落単した。
プログラミングは学部のまわりのやつらよりは多少できたが、それでも1番ではなく、当然外の世界を見れば、底辺もいいところである。
肝心の機械学習についてであるが、情報学部のパターン認識の講義をとったものの、ただコードが動くように書き、手書きの数字を識別できるようになっただけで、SVMの理論的背景もNNがなんたるかということも理解できぬまま、C評価の単位がきたのみである。
かといって努力せず、まわりの人と交流することもなければ、無理やり実績を作ってインターンに行くようなこともしなかった。
よくて数行のコードとGoogle Analyticsを使う程度の仕事しかできないお前はそうして雪かきをして一生を終えるだろう
http://aiweeklynews.com/archives/49678692.html
・Excelはがっつり使える
・Pythonのnumpyやpandasでデータの処理ができる
例えばですが、pythonを自分のパソコンに環境構築して、「Hello,world!」と表示できるようになったら、面接に申し込んで、「少しはpythonできます」と言ってみるのも一つの方法かもしれません。
実際に見分け方がわからなくてこれに引っかかって採用してしまう場合もあるんだろうな、とも思う。
自分がこの手の人材(エンジニア)を採用する場合にどうやって質問をすれば見極められるのかエンジニアの採用にも関わっている身としてを考えてみた。
AI人材という呼称自体がぞわぞわするけど、一旦そこは我慢する。
まず採用を行う前に、AI人材を取って何をしてもらいたいのかをチームないし採用意思決定者としっかり確認する。
など、あとは案件ベースなのか自社開発なのかそれぞれ必要となる能力がオーバーラップしつつも異なっているため。
バックグラウンドを確認する。実務や研究の経験の話が出てくるのがメジャーだと思うが、エンジニアとしてのバックグラウンドがあれば独学勢でも野良kagglerなどレベルの高い人はいるので実務経験に絞らなくても良いと思う
機械学習全般の基本的なところから確認していく。質問としてはこんな感じだと思う
・過学習ってなんでしょうか
イメージとしては非エンジニア職でも必要になる「この辺りの言葉が通じないと絶対困ったことになる」一般常識を確認する感じ。
画像や映像の認識などディープラーニング系の業務が多い想定の場合
から始まって
・どうやって訓練したのですか?
・どうしてそのような構成にしたのですか?
と突っ込んでいく。
確認したいことはディープラーニング「しか」できない人かではないかという点。
ある程度統計やベイズ法周りの知識が無いと詰むため。逆にディープラーニングが不要な業務ならこっち一本でも可。
・勾配降下法について説明してください
・畳み込みニューラルネットワークについて仕組みを説明してください
盲目的にライブラリを使ってるだけでないかという点を確認したい。
SVMを入力に適用するだけならsklearnで5行書くだけで誰でも出来る。手法の背景や対象データの特性をきちんと考えて使っているかを見たい。
・kaggleのコンペに参加したことはあるか
・メダルの取得状況
kaggleに参加した経験があればnoteからその人の手付きを直接評価できるし、メダルという他メンバからも客観的に評価できる定量指標もある。
学習意欲とか普段の姿勢を確認したい。もしかするとここが一番重要かも。
・普段何を参考に勉強しているか / 論文を読む習慣があるか(最近読んだ論文があれば教えてください)
・今興味のあること
色んなライブラリが出てるから、Deep Learningを使うこと自体は全然難しくない。
おかげで暇人がDeep Learningをちょっと試してみたみたいな記事がよくホッテントリに上がってくる。ブクマをつけてるやつらは大抵、自分で試してみる気力とか能力のない残念な人たち。
ところが、記事の内容を見てみるとマジで単に使ってみてるだけなんだよな。なんでDeep Learningを使わなきゃいけないのかさえ考えてない思考停止。ほとんどの場合は、昔からある3層のニューラルネットとかSVMで十分な性能が出る問題になんとなくDeep Learningを当てはめているだけ。
あのな、Deep Learningみたいに膨大なパラメータを持ってる学習モデルは簡単に過学習を起こすから、素人が下手に扱うとむしろ精度が落ちるもんだ。そこそこ難しいタスクに対して上手く学習するには、とんでもない量の訓練データが必要になる。しかも、Deep Learningは手動で設定する必要があるハイパーパラメータの数も膨大で、学習率とかノード数、正則化のパラメータみたいなやつらを地道に調整しなけりゃいけない。はっきり言ってめちゃくちゃ泥臭い作業だ。
なんでGoogleとかがDeep Learningで成功しているか、少しでも考えたことあるか?あいつらは過学習なんて関係なくなるほど、無茶苦茶たくさんのデータを手元に溜め込んでるんだ。しかも、ハイパーパラメータ設定の勘所を掴んでる職人みたいな技術者を金の力でどんどん集めている。
Deep Learningは理論的な下支えがほとんどなくて、勘と経験則で成り立ってる世界だ。数年前の定説が簡単にひっくり返ることが多いし、正直なところあれは研究と呼べるものではないと思う。「なぜかは知らんがやってみたらうまくいった」みたいな事実が羅列されてるだけ。思いついた手法が上手くいくかが運任せという意味では、ガチャを引いてるのとだいたい同じ。無課金勢がいくら知恵を絞っても廃課金勢には勝てない世界。
というわけで、お前らがぽっと出のアイディアでDeep Learning使ったところでゴミみたいなアプリが出来るだけだからやめとけ。
そろそろ大学院入試シーズンなので,聞かれそうな質問をまとめてみた.
質問は大きく分けて2種類ある.コンテキストに強く依存した質問と,テンプレ質問だ.
このうち,後者は仮に試験官が一切話を聞いていなかったとしてもできる質問だ.時間を掛ければ対策はできる.
よっぽど試験官の頭が良くない限りはテンプレ質問ばかり来るから,
テンプレ質問の準備をしておけば院試は恐れることはない.試験範囲が決まった筆記試験のようなものだ.
また,コンテキスト依存の質問も発表内容のみからできる質問と,そうではない質問に分けることができる.
『「手法にはナイーブベイズ法,決定木,SVMがあり,そのうちSVMを採用する」
とおっしゃっていましたが,なぜ他の手法を採用しなかったのですか?』
穴のない発表をすることは難しいので(試験官がちゃんと話を聞いていれば)
この手の類いの質問はよく来る.
論理的に行われる質問は,論理を押さえておけば容易に対策できる.
つまり,
あたりを押さえておけばいい.
例に挙げた質問に対しては,他の手法を採用しない理由,SVMを採用する積極的な理由を
きちんと答えられればOKだ.
これは試験官がその領域に対する知識を持っていて,かつ突っ込みどころがあるときに来る質問だ.
質問の種類としては一番対策が困難だが,これを綺麗に返すことができれば評価はうなぎ登り.
例えば,『「機械学習にSVMを利用する」とおっしゃいましたが,
ニューラルネットワークなど別の手法はご検討されなかったのでしょうか』
といった質問だ.もちろん検討しているけれど時間の都合上紹介しなかったという
雰囲気を出しつつ,隠しスライドでも出しながら説明すれば良い.
この質問に関しては,ひたすら基礎勉強・サーベイをして知識を身に付けるしかない.
時間がないのであれば不勉強を悔いつつ,このような質問が来ないように誘導しよう.
こういう質問だらけになることはまずないが,現実はそうではない.
逆に言えば,誰もが思いつくようなこのような質問に
うまく答えられない場合は評価はかなり低くなってしまうだろう.
いつでも明確な回答ができるように準備しよう.
上記新規性・有用性の変形だが,こちらの方がやや難しいことがある.
志望研究科が学際的な場合,特に前者の質問にはかなり困るけれど,
何となくそれっぽいことを答えよう.
時間が短い場合,これらを全て押さえた十分な発表を行うことは難しい.
ただし,これらについてはいつ聞かれてもいいように,
発表には使わなくてもスライドは用意しよう.
修士の院試であればどうせ研究は終わっていないのだから,絵空事を答えればいい.
このような質問をする人は大抵何もわかっていないので,何を答えても納得してくれる.
読んで無くてもタイトルを5本くらいは挙げて,
それらしい説明をしよう.
院試なんてものは通過儀礼なので適当に流せばいいと思うけれど,
これらの質問は学会その他にも応用できるので日頃から考えておくと良い.
また加減が難しいところではあるけれど,例えば先行研究を一切説明しないなどのように
あえて穴を作っておいて質問をそこに誘導するという手法もある.
明かな穴がある発表をしたことのマイナス評価を上回る場合は有効だ.
学位審査や院試といった場においては狙ってもいいかもしれないが,
SVMかじった程度で何が分かるんだwwwwwwwwwwwwwwwwww
下記URLの日記で指摘したとおり、まともなものは出てこなかったようですね。
http://anond.hatelabo.jp/20140611123426
ただ、バッテリーの問題、認識率の問題はある程度解決したようです。
筐体を大きくすることで何とかしたようですね。
逆転の発想のブレークスルーです。かっこいいリングという前提条件を覆すという。
台無しですね。
・認識率
登録できるジェスチャーを5つに絞ることでごまかしているようですね。
認識パターンはスマートフォン側に保存されるはずなので、メモリ云々ではないでしょう。
5つならランダムで出しても5回に1回はあたるが、10個なら10回に1回になる。
ということでしょう。多少の情報があれば確率は、まあ、50%くらいにはなるんでしょう。
チュートリアルなんか認識対象が絞られてるから簡単だし、もしかしたら何をやっても認識するかもね。
あと、おそらく認識対象が増えると識別に時間かかりそうですね。
どうせ単純なSVMかなんかでしょう。
というわけで、台無しですね。
今後の活躍が楽しみですね!
用語並べるのはいいけど、勉強したことあるの?
ニューラルネットだろうがSVMだろうがなんだろうが(ていうかそこに並列にボルツマンマシンとかどう考えても枯れてる話を持ってくるセンスがよくわからん)、ノード数増やしたところで人間の思考に近いものすら作れないのはほとんど自明だろ。
その「どうやって学習させるか」が大問題なんだっての。
無論ネットワークを構築するだけでは学習できないので外界を知覚するセンサーを与えたりしなければならない。人間と同じようなセンサーを与え、人間と同じような環境で学習させなければ人間と同じような知能にはならない。
簡単に言ってくれちゃってるけど、そのセンサーとやらはどうやって実現するわけ?