はてなキーワード: コーディングとは
最後に、定量化するのが最も難しいが、それに劣らず重要な改善のカテゴリーを紹介しよう。
難しい数学の問題を解くように言われたとき、頭に浮かんだことを即座に答えなければならないとしたらどうだろう。最も単純な問題を除いて、苦労するのは明らかだろう。しかしつい最近まで、LLMにはそうやって数学の問題を解かせていた。その代わり、私たちのほとんどはスクラッチパッドで段階的に問題を解いていき、その方法ではるかに難しい問題を解くことができる。「思考の連鎖」プロンプトは、LLMのそれを解き放った。生の能力は優れているにもかかわらず、明らかな足かせがあるため、LLMは数学が苦手なのだ。
私たちはここ数年で、モデルの「足かせを外す」ことに大きな進歩を遂げました。これは単に優れたベースモデルをトレーニングするだけでなく、アルゴリズムの改良によってモデルの能力を引き出すものです:
足場作り。CoT++について考えてみよう:ただ問題を解くようモデルに求めるのではなく、あるモデルに攻撃計画を立てさせ、別のモデルに可能性のある解決策をたくさん提案させ、別のモデルにそれを批評させる、といった具合だ。例えば、HumanEval(コーディング問題)では、単純な足場作りによってGPT-3.5が足場なしのGPT-4を上回った。SWE-Bench(実世界のソフトウェアエンジニアリングのタスクを解くベンチマーク)では、GPT-4は~2%しか正しく解くことができませんが、Devinのエージェントの足場があれば14-23%に跳ね上がります。(後ほど詳しく説明するが、エージェントのアンロックはまだ初期段階に過ぎない。)
ツール:もし人間が電卓やコンピュータを使うことを許されなかったらと想像してみてほしい。まだ始まったばかりだが、ChatGPTはウェブブラウザを使ったり、コードを実行したりできるようになった。
エポックAIによる研究によると足場作りやツールの使用など、これらのテクニックのいくつかを調査したところ、このようなテクニックは多くのベンチマークで通常5~30倍の効果的な計算量の向上をもたらすことがわかった。METR(モデルを評価する組織)も同様に、同じGPT-4ベースモデルからのアンホブリングによって、エージェントタスクのセットで非常に大きなパフォーマンスの向上を発見しました。
https://situational-awareness.ai/wp-content/uploads/2024/06/metr_gains_over_time-1024x597.png
これらをコンピュートとアルゴリズムの効率で統一した実効的なコンピュート規模に当てはめることは困難ですが、少なくともコンピュート規模の拡大やアルゴリズムの効率とほぼ同規模の大きな進歩であることは明らかです。(また、アルゴリズムの進歩が中心的な役割を担っていることも浮き彫りになっています。0.5OOM/年の計算効率は、すでに重要なものではありますが、ストーリーの一部に過ぎません。)
「アンホブリング」こそが、実際にこれらのモデルが有用になることを可能にしたのであり、今日多くの商業アプリケーションの足かせとなっているものの多くは、この種のさらなる「アンホブリング」の必要性であると私は主張したい。実際、今日のモデルはまだ信じられないほど足かせが多い!例えば
ここでの可能性は非常に大きく、私たちはここで急速に低空飛行の果実を摘んでいる。これは非常に重要です。"GPT-6 ChatGPT "を想像するだけでは完全に間違っています。 GPT-6+RLHFと比べれば、進歩は段違いだ。2027年までには、チャットボットというより、エージェントのような、同僚のようなものが登場するだろう。
続き I.GPT-4からAGIへ:OOMを数える(8) https://anond.hatelabo.jp/20240605210232
私たちは今、基本的に人間のように会話できるマシンを手にしている。これが普通に思えるのは、人間の適応能力の驚くべき証であり、私たちは進歩のペースに慣れてしまったのだ。しかし、ここ数年の進歩を振り返ってみる価値はある。
GPT-4までのわずか4年間(!)で、私たちがどれほど進歩したかを思い出してほしい。
GPT-2(2019年)~未就学児:"わあ、もっともらしい文章をいくつかつなげられるようになった"アンデス山脈のユニコーンについての半まとまりの物語という、とてもさくらんぼのような例文が生成され、当時は信じられないほど印象的だった。しかしGPT-2は、つまずくことなく5まで数えるのがやっとだった。記事を要約するときは、記事からランダムに3つの文章を選択するよりもかろうじて上回った。
当時、GPT-2が印象的だった例をいくつか挙げてみよう。左:GPT-2は極めて基本的な読解問題ではまあまあの結果を出している。右:選び抜かれたサンプル(10回試したうちのベスト)では、GPT-2は南北戦争についてある程度関連性のあることを述べた、半ば首尾一貫した段落を書くことができる。
https://situational-awareness.ai/wp-content/uploads/2024/06/gpt2_examples-1024x493.png
当時、GPT-2について人々が印象に残った例をいくつか挙げます。左: GPT-2は極めて基本的な読解問題でまあまあの仕事をする。右: 厳選されたサンプル(10回試したうちのベスト)では、GPT-2は南北戦争について少し関連性のあることを言う、半ば首尾一貫したパラグラフを書くことができる。
AIの能力と人間の知能を比較するのは難しく、欠陥もあるが、たとえそれが非常に不完全なものであったとしても、ここでその例えを考えることは有益だと思う。GPT-2は、その言語能力と、時折半まとまりの段落を生成したり、時折単純な事実の質問に正しく答えたりする能力で衝撃を与えた。未就学児にとっては感動的だっただろう。
GPT-3(2020年)~小学生:"ワオ、いくつかの例だけで、簡単な便利なタスクができるんだ。"複数の段落に一貫性を持たせることができるようになり、文法を修正したり、ごく基本的な計算ができるようになった。例えば、GPT-3はSEOやマーケティング用の簡単なコピーを生成することができた。
https://situational-awareness.ai/wp-content/uploads/2024/06/gpt3_examples-1.png
GPT-3について、当時の人々が印象に残った例をいくつか挙げてみよう。上:簡単な指示の後、GPT-3は新しい文の中で作られた単語を使うことができる。左下:GPT-3は豊かなストーリーテリングを行ったり来たりできる。右下:GPT-3は非常に簡単なコードを生成できる。
GPT-3はSEOやマーケティング用の簡単なコピーを生成することができた。上:簡単な指示の後、GPT-3は新しい文章の中で作られた単語を使うことができる。左下:GPT-3は豊かなストーリーテリングを行ったり来たりできる。右下:GPT-3は非常に簡単なコードを生成できる。
繰り返しになるが、この比較は不完全である。しかし、GPT-3が人々に感銘を与えたのは、おそらく小学生にとって印象的だったことだろう。基本的な詩を書いたり、より豊かで首尾一貫した物語を語ったり、初歩的なコーディングを始めたり、簡単な指示やデモンストレーションからかなり確実に学習したり、などなど。
GPT-4(2023年)~賢い高校生:「かなり洗練されたコードを書くことができ、デバッグを繰り返し、複雑なテーマについて知的で洗練された文章を書くことができ、難しい高校生の競技数学を推論することができ、どんなテストでも大多数の高校生に勝っている。コードから数学、フェルミ推定まで、考え、推論することができる。GPT-4は、コードを書く手伝いから草稿の修正まで、今や私の日常業務に役立っている。
https://situational-awareness.ai/wp-content/uploads/2024/06/gpt4_examples-3.png
GPT-4がリリースされた当時、人々がGPT-4に感銘を受けた点をいくつか紹介しよう。上:GPT-4は非常に複雑なコードを書くことができ(中央のプロットを作成)、非自明な数学の問題を推論することができる。左下:AP数学の問題を解く。右下:かなり複雑なコーディング問題を解いている。GPT-4の能力に関する調査からの興味深い抜粋はこちら。
AP試験からSATに至るまで、GPT-4は大多数の高校生よりも良いスコアを出している。
もちろん、GPT-4でもまだ多少ばらつきがある。ある課題では賢い高校生よりはるかに優れているが、別の課題ではまだできないこともある。とはいえ、これらの限界のほとんどは、後で詳しく説明するように、モデルがまだ不自由であることが明らかなことに起因していると私は考えがちだ。たとえモデルがまだ人為的な制約を受けていたとしても、生のインテリジェンスは(ほとんど)そこにある。
https://situational-awareness.ai/wp-content/uploads/2024/06/timeline-1024x354.png
続き I.GPT-4からAGIへ:OOMを数える (3) https://anond.hatelabo.jp/20240605204704
転職してデータサイエンティストとなるみたいなのは、すなおにスゴイ!よね。
もうちょっと若い時に進路再考してそっち方面に転職してもよかったかな?
しかしNNとかそっち系がスゴイねってなったのはここ10年だから、そうかんがえると、
10-3くらいとして7年前、ちょうどコロッケ問題になるちょっと前ってなタイミングで
うごけばよかった?それにしても時すでに遅しだな。ちょっと生まれるのが早すぎたってことだよな。
この世代って大学に入るまでコンピューターをガシガシいじって・・コーディングやるにしても経済的に現実的じゃなかったし
そもそも将来のことかんがえて着手しといたら・・みたいなかんじでもなかった。
単価もいいだろうしぁ。
Fランや専門の情報学校って、単純にIT土方養成学校なんだよね
とりあえずまともな四大を目指すのはだるいけど
そういうやつに限ってリアル土方をバカにしてたりするわけで、結果はお察し
ああ、コーディングは別に自分でやる必要にないな、って思って他の専攻を選んでたわけ
GAFAにしろ何にしろ、現実世界の痛みを改善することでのし上がってきたわけで
仮想世界に浸かりきりで表に出てこない人間にソリューションが生み出せるはずもない
そして情報系で教えているレベルの話は、まともな四大に行ける知能があれば
本を片手にパチパチ叩いていれば普通はできるわけ
今日は入院している祖母に会いに行く日だ。入院前はもう呆けて風呂も入らないぐらいひどい状態だったが、入院してからはちゃんとしているらしい。
それはそうと、lispでpython環境を構築する話だが、結局オートコンプリートはうざいし、使う機能といったらautopep8とisortぐらいなので、以下を.emacsに組み込んだ。
(defun python-autopep8-and-isort () "Run autopep8 and isort on current Python buffer." (interactive) (when (eq major-mode 'python-mode) (shell-command-on-region (point-min) (point-max) "autopep8 - | isort -" nil t))) (with-eval-after-load 'python (define-key python-mode-map (kbd "C-c C-r") 'python-autopep8-and-isort))
.emacsファイルには他にも様々な設定を付与したが、ここではコードを書ききれない。
さてそういうわけで週末コーディングが趣味としてちゃんと機能することはわかったが、毎週作るとなると、いくつも何かを作るよりは一つのタフなものを作りたいと思うわけである。
それで、最有力候補は「Elasticsearchのようなものをpythonで実装する」という話がある。
Elasticsearchが徹底された設定外部化によってjsonを多用するのだが、これがあまり柔軟性がないので、コードを直にいじれるようにしたいと思ったためである。
例えば自作の日本語トーカナイザを組み込みたいときElasticsearchプラグインをJavaで書かなければならない。私はJavaが嫌いであり、プラグインを「インストールする」という手順も冗長に感じる。
それよりはpythonで作られた検索システムに、適当なトーカナイズ関数を実装して呼び出すことができればかなり柔軟であるように思うわけである。
難しい点があるとすれば、大規模分散システムへの対応で、金をかけなければそういうシステムをテストすることができない。
できるだけ金をかけずに趣味をやるというのがモットーなので、これではまずいわけである。
まあ何事も困難というものはある。まずは手を動かすことが重要だ。Linus Torvaldsも"Talk is cheap, show me the code"と言っているではないか。
4連休が始まり、専ら散歩とインドカレーを楽しんでいる。「インドカレーのスパイスで頭がおかしくなるのではないか」と思ったことはあったが杞憂だった。
家で過ごすときは、自分の気力のレベルでも作れる程度の簡単なプログラムを書いている。今日作ったのはポモドーロタイマーとTODOリスト管理ツールだ。
何かを作るとしても、自分が使えるようなものでないとやる気が出ないので、便利ツールとして作っている。
作ったものを自分自身で使って試すのは「ドッグフーディング」と呼ぶらしい。ドッグフードが犬にとって健康的で安全であることを示すには実際に食って確かめろ、というわけだ。
次に作ろうと思うのはブログ記事推薦ツールである。廃人日記を読み込み、ふさわしい記事をピックアップするツールである。
1. ブログ記事を収集しその集合をS1とする。廃人日記を収集しそれをS2とする。
2. S1, S2をベクトル化する。S2は時間減衰関数で重み付けして線型結合し、これをTというベクトルとして保存する。
3. Tのベクトルに最も類似するベクトルを数件S1から取得する。
仕事とは違い、趣味のコーディングはルンルン気分だ。期限もなければ収益もない。自分がほしいかどうかだけがモチベーションである。
世間はGWだが、私は昨日・今日・明日は仕事がある。その後は4連休だ。
ところで午前だけ活発に過ごすという習慣を始めてみて、かなり調子がいい。
早寝早起き、21時には寝る。早朝にランニングして冷水シャワーを浴びる。仕事や勉強は午前のうちに終わらせる。この3つをやるようにしている。
長距離走タイプではないので午後は体力がもたない。リラックスのために仕事が終わってからテレビを見ようとするが、テレビの音のストレスにすら耐えられない。
食事は一日2回ぐらいがちょうどいい。朝と夕である。昼に食べると睡魔が襲うことが多い。
リーナス・トーバルズが健康のために部屋でスタンディングデスクとウォーキングマシンを組み合わせて仕事しているという動画を見たことがあるが、部屋にこもりきりのプログラマーという仕事は、そうでもしないと運動する機会が無い。
私も自宅から仕事をしており、一日の歩数が少なすぎて健康に対する危機感を持っている。
それで朝のランニングというわけだが、聞く話によれば、効果を維持したまま運動の時間を減らすには強度を増やす必要があるらしい。だからウォーキングでは時間がかかりすぎてしまうので走るというわけだ。
ランニングの距離は、息が切れてくるタイミングに応じている。私は体力がなく、500mをそれなりの速度で走ればすぐに息が切れるので、そのぐらいで丁度いいと思う。
雨の日はさすがに外へ出ることはないが、そういう日もあるさと思うことにしているし、家の中で筋トレするようなこともない。
体力的に言って、趣味を行うのは休日だけになる。趣味でなにをやるかについてずっと悩み続けてきたわけだが、週末コーディングと銘打って何か作ってみるのも悪くないかもしれない。
「ソースコードに間違いが見つからないのに想定される出力をしない。あるいはソースコードに修正を加えていないのにいきなり想定出力を返すようになった。」
こういう経験がある人はいるはずだ。なぜこれが起こるのか。一つの原因を見つけた。
それは環境変数や設定ファイルに存在する。デプロイ時には設定ファイルを特定の値に修正してから、ということがあるだろう。
開発環境でコーディングする人が、デプロイ時の設定ファイルには関与せず、デプロイの担当者がそれを把握している。
開発者はセキュリティ上の理由でデプロイ時の設定ファイルの内容を見ることができない。
この場合、設定ファイルの内容が間違っていても、開発者が原因が正しく特定できないケースがあるのである。
対処方法は以下である。まず事前にやっているであろう対処は以下である。
追記:
思ったんだよね俺、コンピュータ・サイエンスにプログラミングは含まれないとか言うアホを見てさ
いや、アルゴリズムは数学であり、それを設計するプログラミングは明らかにコンピュータ・サイエンスの一部だろと思うわけだが、なぜこいつらは「プログラミングはコンピュータ・サイエンスではない!」と言いたがるか
企業で働くキラキラWebプログラマーがプログラミングないしはコーディングをやっているのをみて「アイツラと一緒になりたくない」と自称インテリは言う
「そうだ、サイエンスにはちゃんと定義があるはずだ、その定義で奴らと俺らのボーダーを引こう」と考えて、自称インテリはコンピュータ・サイエンスにプログラミングを含めないのである
当然、日本だろうと海外だろうと自称インテリは存在するので、「コンピュータ・サイエンスにプログラミングは含まれない」と言うと、負け犬の自称サイエンティストが共感のイイネを押すだろう
「俺達はサイエンティスト、あなたとは違うんです」というわけである
はい、JavaScriptによるコーディングはコンピュータサイエンスの一部と見なすことができます。コンピュータサイエンスは、情報とその処理に関する学問であり、プログラミングはその重要な要素です。JavaScriptは、ウェブページを動的にするための主要な言語の1つであり、ウェブ開発の分野で広く使用されています。したがって、JavaScriptを学び、それを使用してコードを書くことは、コンピュータサイエンスの実践的な応用の一部と言えます。しかし、コンピュータサイエンスはプログラミングだけではなく、アルゴリズム、データ構造、ネットワーク、データベース、人工知能など、より広範なトピックをカバーしています。それぞれが特定のプログラミング言語やツールを使用して探求されることがあります。JavaScriptはその一部であり、特定の問題を解決するためのツールとして使用されます。それはコンピュータサイエンスの一部であり、その全体ではありません。それでも、JavaScriptをマスターすることは、コンピュータサイエンスの重要なスキルを習得するための素晴らしいステップです。それはあなたが複雑な問題を解決するためのロジックとアルゴリズムを理解するのを助け、あなたの思考を開発するのを助けます。それはまた、あなたがウェブ開発の世界に足を踏み入れ、あなた自身のウェブサイトやアプリケーションを作成するのを助けます。だから、はい、JavaScriptによるコーディングは確かにコンピュータサイエンスの一部です!
従来プログラミング業界においては、やれ「ググる力が重要」だの、やれ「分からないことはググればいい」だのと言われてきたわけだが、もうそろそろこういう妄言は根絶されるべきだ。
そもそも、専門知識の要る分野でそれなりの水準の仕事をしようと思えば、ググって済むようなことはほとんどない。
実際、プログラミング以外のあらゆる分野で「ググればいい」なんて言われることはほぼ無い。その分野の仕事に必要な基礎知識を身につける方が圧倒的にウェイトが高いからだ。
「ググる力」とか言ってるアホは、じゃあためしに俺の手元に、タネンバウムの「コンピュータネットワーク」第6版があったから、これと同等の知識を、コーディング時の調べ物だけで身につけてみてくれないか。
こんな知識は業務で必要ない?そりゃお前がその程度の仕事しかしてないってだけだろ(笑)
ネットのサンプルコードコピペするしか能のないIT土方、コンピュータサイエンスや数学にコンプレックス持ってる低学歴は、さっさとエンジニアやめろ。少なくとも、他人(とくにプログラミング初学者)を自分と同じ水準に貶めるな。
まず挙げられるのが、何でもかんでも言わなきゃやらない指示待ち無能への揶揄である、ということ
オブラートを剥ぐと、その程度のこと自力でやれカスが、であるがそんなこと言うと社会人として終わってるのでオブラートに包むのである
つぎにそこまでは無能ではないが初心者へアドバイスとして述べられるパターン
こちらは単純、元増田にも触れられてるが専門知識で調べても出てこない部分はどうしても出てきてしまう
ただしここで重要になるのは直面したその問題が、調べてできることなのか調べてもどうしようもないことなのか、の見当がすばやくつけられるかどうかである
このセンスを鍛えるのに欠かせないのがいわゆる「ググる力」であるのでやってみろと言われるわけなのだ
その最新にある程度追従していかなければならないのは宿命となっている
優秀でなくともある程度マシな人材に育てるにはその感度を鍛えてやる必要がある
ここで重要になるのは「自分から調べる」と言う行為は当たり前であり苦にならないような状態にする必要があると言うこと
もちろん当然であるがググるは比喩であり本当にググるだけでなく書籍や勉強会など必要なものを必要なだけ自分で手に入れる能力である
つらつら思いついたことはこんなところかなあ
anond:20240427075724へのアンサー
8:00 起床。フルリモートなのでこれで間に合う。二日酔いで気持ち悪いのでとりあえず茶だけ飲んで、いますよアピールのためにTeamsを立ち上げる。
8:30 気持ちが悪い。メールとチャットで爆弾回ってきてないのだけ確認。
9:00 スタンドアップ(毎朝定例)ミーティング。頭回らないので自分が何言ってるかよくわからないがとりあえず1分話してお茶を濁す。
10:00 QA(テストの人)が俺が新規に書いたコードが動かないと言ってくる。30分くらいデバッグしたら超初歩的なタイポ(打ち間違い)だった。ため息つきながら、バグだったよグッドジョブ!と空元気でチャットして一行直してまた上げる。
12:00 お昼休み、というのは無い。アメリカ人マトモに昼飯食わない。昨日の残りのカチカチのピザを齧る。ここから動かない頭でコーディング。
13:30 どういう仕様で動くのか問い合わせがくる。それはお前が俺に教えるものなのだが。仕方ないので2年前に俺が勘で書いた仕様書をコピペして送る。
14:00 まだだるいので風呂に入る。そういう時に限ってチャットがくる。スマホの防水偉い。
18:00 いつ終われば良いのかわからないからラップトップ開けたまま飲み始める。
20:00 酔っ払ったままプロダクション(本番環境)にコードをあげる。8PMに働くとか最初言ってなかったですよね。
これで貯まるのは年200万くらい
従来プログラミング業界においては、やれ「ググる力が重要」だの、やれ「分からないことはググればいい」だのと言われてきたわけだが、もうそろそろこういう妄言は根絶されるべきだ。
そもそも、専門知識の要る分野でそれなりの水準の仕事をしようと思えば、ググって済むようなことはほとんどない。
実際、プログラミング以外のあらゆる分野で「ググればいい」なんて言われることはほぼ無い。その分野の仕事に必要な基礎知識を身につける方が圧倒的にウェイトが高いからだ。
「ググる力」とか言ってるアホは、じゃあためしに俺の手元に、タネンバウムの「コンピュータネットワーク」第6版があったから、これと同等の知識を、コーディング時の調べ物だけで身につけてみてくれないか。
こんな知識は業務で必要ない?そりゃお前がその程度の仕事しかしてないってだけだろ(笑)
ネットのサンプルコードコピペするしか能のないIT土方、コンピュータサイエンスや数学にコンプレックス持ってる低学歴は、さっさとエンジニアやめろ。少なくとも、他人(とくにプログラミング初学者)を自分と同じ水準に貶めるな。