HTMLとCSSについて
ものすごく基本的なことが頭の中に入っていなかったので、まとめておきます。
(違ってたら教えてください。)
HTMLとCSSを触っていると、属性とか要素とかクラスとかidとかはたまたタグとか。セレクタの「.」と「#」の違いはなんやねんみたいになります。
多分整理するとこう!
『HTML』
基本的に「要素」と「属性」しかない。
「要素」はhtmlの一行に対応する。
ちなみに頭に<div>とかは要素名。
http://www.tagindex.com/html_tag/elements/
そんで、それぞれの要素に対して属性がたくさんある。
その要素に限定されているものもあれば、共通のものもある。
共通の属性一覧
http://www.tagindex.com/html_tag/attribute/
『CSS』
CSSは皆さんご存知のようにかっこよくするのに使うわけですが、「どこ」を「どう」かっこよくするかの「どこ」を指定するのがセレクタです。
このセレクラ一覧がこちら。
http://www.htmq.com/csskihon/005.shtml
http://scene-live.com/page.php?page=42
レスポンシブルを考える際に必須な「@」はこちら
http://www.htmq.com/csskihon/010.shtml
「どう」を指定する際に使うのがプロパティ。一覧はこちら。
http://www.tagindex.com/stylesheet/properties/
なのでこれをぜーんぶ頭に入れて組みにいけば自由自在にWebページが書けるようになるわけですね。
やったね!!
CSSファイルのイカした設計方法はまた今度書きます。
書けるか分からないけど。
Kerasヤバい
世の中のデータがたくさん取れて、パッっと最適化できて、それを組み込んだり、資料に落とし込んで、意思決定なり、レコメンドエンジンなり、予測なりに使えるとすげー世界って良くなるよな〜と高校生の時に思って、ずっと勉強してきたわけです。
大学1〜4年くらいまで純粋数学をやっており、挫折して(多様体とか無理でした)、大学院生になってから応用数理をやっておりました。
大学院生の時から機械学習って言葉は30年くらい前の本には書かれていて存在は知っていましたし、エージェント理論って経済的に見るとすげー本質的な話だと思っていて、強化学習のロジックとか定義の仕方とかも大好きです。
なので、修士論文は経営経済学で分野で書きました。
(エージェント理論とゲーム理論をベースに企業の投資行動についてシミュレーションしてました)
そのあと、時は流れ、ほとんど関わっていなかったのですが、
とりあえずこれだけは言わせてください。
Kerasヤバい
自分が高校生の時に思っていた
「世の中のデータがたくさん取れて、パッっと最適化できて」の
「パッっと最適化できて」
がほぼ完璧に社会実装されている
もう、人間って、
こういうデータを取ろう!
って決めるのと、
システムにこう組み込もう!
って考えるだけでいいんですね。
すげー。
この凄さを誰にどう伝えれば良いのでしょうか。
凄すぎる。
『Quantum possible』について(暫定)
自分がITというものを愛してしまっていて、
このITが作っているインターネットとスマホを中心とした世界を愛しています。
大学院生の時からでその時はちょうど、「クラウド」という言葉がバズワードになってました。
そのあと、ビックデータ、VR/AR、AI、ブロックチェーンと来て、
ネタ切れ感があったのですが、間違いなく今年は
だと思っているので勉強しました。
この根拠は、MSが本気出していると思っているからです。
MSのCEOはMSはAIとVR/ARと量子コンピュータに集中すると著作の中で書いています。
全然まだわかっていないのですが、忘れるのでまとめておきます。
ーーーーーーーーーーーーーーーーーーーー
量子コンピュータには2種類あります。
量子ゲート方式(回路モデル)
前は前者しかなかったのですが、後者は割とここ最近でて来ました。
前者は素因数分解の高速化ができますし、後者は高速で循環セールスマン問題が解けます。
なんで高速で解けるのかについて説明してみると(全然わかっていないのですが)
1 or 0の世界ではなく、多値を量子ビットが取れるからに尽きそうです。
ーーーーーーーーーーーーーーーーーーー
ただ問題があって、
全ての問題が量子コンピュータを使うと高速化されるわけではありません。
一部の問題のみ量子コンピュータを使うと高速化されます。
その一部の問題のことをquantum possibleというそうです。(本当か?)
このことを理解するのが一般人にとってはとても重要な気がします。
ーーーーーーーーーーーーーーーーーーーー
因みに、私は少し難しいことを気合いで言語化することによって、良くない頭にインプットしているのですが、今までのものを言語化してみると以下です。
『クラウド』 サーバに一気にデータを入れている
『ビックデータ』 データ分析するといいことがあるかも
『VR/AR』 ハードの進化
『AI』 数値最適化問題を解いているだけ
『ブロックチェーン』 ビサンチン将軍問題の電力による解決手法
『量子コンピュータ』 多値をとる量子ビットにより一部の問題が高速に解けるようになる技術(暫定)
ーーーーーーーーーーーーーーーーーーーーー
さて、普通のエンジニアである私達は何をすればいいかと言えば、これをどうお客さんの導入メリットになるかを考える必要があります。(たぶん)
従来のコンピュータは、
「A,Bについて◯か×かを判断する問題」
は十分に解けた。
量子コンピュータは、
「A,B,C,D,E・・・・について◯か×かを判断する問題」
を早く解くことができる。
こんな問題ってなんでしょうか......。
参考
【書評】『Python機械学習プログラミング 達人データサイエンティストによる理論と実践』
衝撃的だ。
このような本は出会ったことがない。
こんなに実践的で理論的で書かれておりvalueがある本を知らない。
本書はPythonで機械学習を勉強するための本だ。
この分野は様々な本が出ているが、こんなにも色々と書かれている本を知らないし、こんなにもvalueがある本を私は知らない。
本書の最後をそのまま引用しよう。
「機械学習の刺激的な旅(中略)を楽しんでいただけただろうか。(中略)この分野の基本的なテーマは全て取り上げた。それらの手法を実際に手に取り、現実の問題を解決するための準備はもう十分に整っているはずだ。」
そうこの本に機械学習について
全て
書かれているのだ。
あとは実装すればいいだけ。
しかも、サンプルコードが全てネット上に上がっている。
こんな素晴らしい本がたったの4,000円。
なんていい世界なんだ。
L1正則化とL2正則化について
絶対忘れそうなので、まとめておく。
(機械学習の本を読んでいると当たり前のように出てくるのですが
当たり前なんですか?)
まず、ちゃんと言葉の整理。
『正則化』
wikipedia先生曰く
「正則化(せいそくか、英: regularization)とは、数学・統計学において、特に機械学習と逆問題でよく使われるが、機械学習で過学習を防いだり、逆問題での不良設定問題を解くために、追加の項を導入する手法である。モデルの複雑さに罰則を科すために導入され、なめらかでないことに罰則をかけたり、パラメータのノルムの大きさに罰則をかけたりする。」
要は
『L1正則化』
不要なパラメータを削りたいことを削る時に使う
『L2正則化』
過学習を抑止するのに役にたつ
この図を見れば一目瞭然!!
(理解するまで30分かかった汗)
(引用:
http://tjo.hatenablog.com/entry/2015/03/03/190000)
最後に3つ言わせてくれ。
・L1L2の「L」の何の略だ?(ルベーグ??)
・こんなことを当たり前のように書くのやめてほしい
・大学の時に教授がノルムノルムとか言っていたけど、もはやキレイだなぁとしか思わない
参考
https://ja.wikipedia.org/wiki/正則化
http://tjo.hatenablog.com/entry/2015/03/03/190000
【機械学習】LPノルムってなんだっけ?
https://qiita.com/kenmatsu4/items/cecb466437da33df2870
Lpノルム
最近のAIについて思っていること
『最近のAIについて思っていること』
AIについてかなり表面的な情報しかとってませんが、思うことがあります。
AIって大きく分けると、
「教師あり学習」
「教師なし学習」
「強化学習」
3つあります。
「教師あり学習」は、
答えを与えるとそれに近いかどうか判別してくれます。
なので、猫の画像を見せておけば、新たに与えた画像が猫であるかどうか判別できます。
動画は画像の集合なので、人が通ったかどうかなんてことも判別できるわけです。そのため、自動運転なんかもできちゃいます。
AIは目を手に入れた!ってのが正しいのはこのためです。
「教師なし学習」は、
主に分類をする際に使われます。
当社のターゲットってどういう風に分類できるんだっけ?みたいな際に使えるし、教師なし学習を教師あり学習にする方法とかもあって、この商品を買ってくれやすいかどうかの分類なんてのもできます。
さて、問題は「強化学習」です。
強化学習って一般に「ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種」。
(普通の人には理解不能です)
強化学習を社会実装するのが難しいのです。
アルファ碁は強化学習なんですが、ディープマインド社はなんで「囲碁」をやっているかといえば、このくらいしか社会実装できないからです。
「教師あり学習」みたいに「車の自動運転」みたいなことはできないわけです。
正確には、強化学習を使って社会実装できるものは教師あり学習で社会実装できます。(たぶん)
なので、
強化学習をほいほい実装できるような世界の天才達の脳を、
なにに使うのかをマジで考えて、それを提示できるリーダーに全てかかっていると思います。
強化学習を使うと良いものの例。
今までのデータはあるが本当にそれがベストかどうかわからないようなことに使うとよいです。
そうすると今までのベターからベストを導いてくれます。
(こういうもので、パイがでかいものってなんだ?)
こういう世の中になるといいと思う
こういう世の中になるといいと思う
テクノロジーは常に進化しており、新しいテクノロジーはいくらでも出てきているし今後もそうである。
この”テクノロージー”とエンジニアはどうやって向き合っていけばいいか。
結論はこうだ。
エンジニアは決して「このテクノロジーを使ってある問題を解決しよう」といった態度をとるべきではない。
「ある問題があった際に、このテクノロジーを使えば解決できる」という態度をとるべきである。
例えば、いくらデータベースが進化したからと言っても、データベースを使ってデータをストックして、業務効率化をしようといった提案をするべきではない。
業務効率化という問題がある際に、データベースの利用といった方法で問題を解決すべきだ。
なぜか。
それはそのテクノロジーが最適であるかどうかわからないからである。
昨今のAIのニーズを見ていると違和感しかない。その違和感は、前者だからだ。AIを使って投資のレコメンドとかそのようなものしかない。
これが真の解決策であるだろうか。
〇〇という問題があるから、××を使おうというのが正しい解決策であると思うのだ。
そのためにエンジニアはありとあらゆる分野に目を向ける必要があるし、常に新しいテクノロジーを学ぶ必要があると思った次第。
精進します。
以上。