ブックマーク / nowokay.hatenablog.com (48)

  • 目的を規定せずにモデリングを考えても意味がない - きしだのHatena

    オブジェクト指向のでは「自転車をモデリングしてみましょう」「鳥をモデリングしてみましょう」ということが、どういうシステムで使うか規定せずによく書かれています。 けれども、モデリングではどういうシステムで使うかということが大事で、それを決めずにモデリングを考えても意味がありません。モデリングすべきはモノではなくシステムのプロセスです。 よく、オブジェクト指向では現実をモデリングするのようなことが言われますね。 例えば鳥が鳴くとして、その一種であるニワトリをどうモデリングするか、ということを考えるとします。 そうすると、まず void 鳴く() { print("コケコッコー"); } のようなメソッドを考えるのですけど、コケコッコーとうまく鳴けるのは鳴き慣れたニワトリです。そのため、鳴くメソッドにカウンターを用意してどんどんうまくコケコッコーになるようにしたくなります。 いや、そもそも、コ

    目的を規定せずにモデリングを考えても意味がない - きしだのHatena
    toshikish
    toshikish 2024/04/14
  • 掛算の順序と学習指導要領 - きしだのHatena

    あいかわらず掛算の順序の話がもりあがってるようなのだけど、コーディングルールの話なんだから計算の定義の話をしても徒労だよなと思いながら見ていた。 で、ちょっと教育指導要領解説を見てみたのでまとめる。 学習指導要領解説の記述 「【算数編】小学校学習指導要領(平成29年告示)解説」では次のようになっています。順序は表現のときの問題で、計算では交換則を使っていいとなっています。 被乗数と乗数の順序は、「一つ分の大きさの幾つ分かに当たる大きさを求める」という日常生活などの問題の場面を式で表現する場合に大切にすべきことである。一方、乗法の計算の結果を求める場合には、交換法則を必要に応じて活用し、被乗数と乗数を逆にして計算してもよい。 このPDFの115ページ。 https://www.mext.go.jp/content/20211102-mxt_kyoiku02-100002607_04.pdf

    掛算の順序と学習指導要領 - きしだのHatena
    toshikish
    toshikish 2024/04/07
  • 時代がstaticおじさんに追いついてきた(追記あり) - きしだのHatena

    この文章みてください。 オレはもう20年以上システム業界にいるけどな、その長い経験から言うと、オブジェクト指向なんてものは、理論としては面白いけど、およそ実用的とは言い難いものだな。まぁ、例えばGUIのコンポーネントとかはオブジェクト指向に基づいて作られているようだから、そういうツールとかを作る人には必要なものなのかもしれない。しかし君たちがいずれ作ることになる業務アルゴリズムにはまったく無縁のものだと思ってもらって間違いない。どうもこの業界、オブジェクト指向でなければダメ、というような風潮がまかりとおっているけどな、オブジェクト指向なんか当に使っている人はほとんどいないよ。オレも少し勉強してみたけど、カプセル化とかポリ何とかとか、どうにも利点が理解できなかったね。実際、実業務で使ったことなどないしな…… 「またお前、オブジェクト指向の話をしてるのか」と思ったかもしれませんが、2010年

    時代がstaticおじさんに追いついてきた(追記あり) - きしだのHatena
    toshikish
    toshikish 2024/02/08
  • 報道ヘリがうるさくて救助の邪魔になるという話はどう広まったのか - きしだのHatena

    報道ヘリがうるさくて救助の邪魔になるという話はどう広まったのか、というのを調べてみていたのでメモ そもそもとして「報道ヘリがうるさくて救助の邪魔になる」ということなんてあるのか、という話は、1995年1月17日の阪神淡路大震災にさかのぼる。 震災後6日後に収録されたと言われる1月27日放送の「パペポTV」で上岡龍太郎が次のような発言をしていた。 取材陣のヘリコプターがあの被災地の上を飛び回るでしょう。あの爆音のために、生き埋めになってる人に外からどんなに声かけても、その人たちの声が爆音のために聞こえない 救助の邪魔になるという話 以外にも、被災者から「自分が見せ物にされている」というような苦情もあったようだ。救助ヘリの邪魔になる高度を飛ぶようなこともあったらしい。 これは実際に問題だったようで、その後1997年に日民間放送連盟から「航空取材ガイドライン」が出されて、報道ヘリがある程度の高

    報道ヘリがうるさくて救助の邪魔になるという話はどう広まったのか - きしだのHatena
    toshikish
    toshikish 2024/01/02
  • Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena

    オブジェクト指向言語の話をするときに便利なように、Javaを中心にプログラミング言語をまとめてみました。 Javaに影響与えるか、Javaから影響を受けるか、という感じですね。 Simula オブジェクト指向はここから始まったと言われています。 クラス、オブジェクト、継承、仮想関数(多態)といった、オブジェクト指向の基要素が備わっていました。 ただし、「オブジェクト指向」という言葉は生まれていません。 Smalltalk Simulaから発想を得て「オブジェクト指向」という言葉を生んだのはアラン・ケイでした。 しかし、モデルとしてはSimulaとは異なりメッセージングを主体としたものでした。また、アラン・ケイの「オブジェクト指向」はプログラミングのパラダイムだけではなく、人がコンピュータをどのように扱うかというメタファであり、ダイナブックというハードウェアやそのユーザーインタフェースを含

    Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena
    toshikish
    toshikish 2023/11/25
  • きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena

    先日のJJUG CCC 2023 Fallの懇親会でクソコードを研究しているという学生がいたのだけど、クソコードの研究は難しいという話をした。 人工的にクソコードを再現しても、あの野生のクソコードのクソさには全く足りないわけで。 トルストイが言うように「すべてきれいなコードは互いに似通っているが、クソコードはそれぞれにクソの趣を異にしているものである」なので、なかなか「これがクソコード」のように類型化するのも難しい。 典型的なクソコードを書いてみても、なんだかきれいなクソコードができてしまう。 クソコードはネットに出回らないので、資料の収集もまた難しい。ネットにないということは、ネットの情報に基づいている「AI」もホンモノのクソコードには触れていないことになる。 クソコード収集サイトをつくっても、実際のクソコードは業務固有処理も含まれるので、掲載できる形に整理していくと来のクソさが薄れて

    きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena
    toshikish
    toshikish 2023/11/17
  • LLaVAを使っておうちのパソコンでも画像からコード生成 - きしだのHatena

    ChatGPTが画像対応して、画像からいろいろなコードが生成できて楽しいことになっていましたが、同じようなことをおうちで動かせるLLaVAが出ていたので試してみました。 GPUVRAM 12GBあれば十分、8GBはギリギリという感じ。 LLaVA-1.5 先週、LLaVAのバージョンアップ版、LLaVA-1.5が出てました。 🚀 LLaVA-1.5 is out! Achieving SoTA on 11 benchmarks, with simple mods to original LLaVA! Utilizes merely 1.2M public data, trains in ~1 day on a single 8-A100 node, and surpasses methods that use billion-scale data. 🔗https://t.co/y0k

    LLaVAを使っておうちのパソコンでも画像からコード生成 - きしだのHatena
    toshikish
    toshikish 2023/10/13
  • 画像対応ChatGPTで設計図からコードの世界が実現しててやばい - きしだのHatena

    アマチュア驚き屋のきしだです。 ChatGPTが画像入力に対応するよという話があって、来週くらいに使えるようになるかなーと思ったら、もう使えるようになってました。 で、写真から「カレーべてる男の人です」くらいを言えるイメージで試してたら、なんかふつうに画面設計やクラス図からコードを書いていてびっくりしてしまいました。 まあ、起きたらこういうのが来てたわけですね。 で、まあ試してみて「あぁ、いままでのマルチモーダルよりちゃんと画像認識してるなー」くらいに思ったわけです。 で、NetBeansでの画面設計を読ませてみたらこう。 こういうコードが生成されました。 import javax.swing.*; import java.awt.*; public class SimpleForm { public static void main(String[] args) { JFrame fr

    画像対応ChatGPTで設計図からコードの世界が実現しててやばい - きしだのHatena
    toshikish
    toshikish 2023/09/28
  • ChatGPTで構成された仮想のソフトウェア会社にシステム開発を行ってもらうChatDevがおもしろい - きしだのHatena

    ChatGPTによるメンバーで構成された仮想のソフトウェア会社にシステム開発を行ってもらうChatDEVが結構おもしろかった。 ChatDEVは、ChatGPTによってCTOやプログラマー、レビュアー、テスターといった役割をもつエージェントをやりとりさせることでソフトウェア開発を自動化しようという試みの実装です。 https://github.com/OpenBMB/ChatDev アイデアは論文にまとまっていて、こちらで概要が翻訳されています。 [LLM 論文]アプリ全自動開発"ChatDev"の日語訳|すめらぎ 使い方としては、とりあえずClone git clone https://github.com/OpenBMB/ChatDev.git そして依存モジュールのインストール cd ChatDev pip3 install -r requirements.txt あと、OpenA

    ChatGPTで構成された仮想のソフトウェア会社にシステム開発を行ってもらうChatDevがおもしろい - きしだのHatena
    toshikish
    toshikish 2023/09/01
  • 分厚く難しそうな技術書を素敵だと思ったら今必要なそうでも買っておくべき - きしだのHatena

    鈍器が届いたんですよ。 カード履歴みてたら昨日13,200円の見覚えのないAmazonからの請求があって、「でもなさそうだしAmazon見ても履歴ないし謎い」とか思ったら宅急便がきて。。。 まあ、注文してた「コンパクトデータ構造」が来てたわけだけど。 asin406512476X:detail 予約したのが6/16で直近の履歴を見てもなくて、そして今日が発売日なので昨日決済されて発送された、ってことらしい。 紙が固めでめくりやすい。というか、めくるのが楽しい。変なデータ構造がいっぱい載ってるのもよい。図も多いので、絵みたい。内容的には読むの大変そうだけど、落ち着いてゆっくり読めば大丈夫そう。 内容としては、圧縮した状態でいろいろ操作ができるデータ構造を考えようぜ、という感じ。 Wikipediaだと「簡潔データ構造」の項目を見ると載ってる。 と思ったら、こういうがあった。 簡潔データ

    分厚く難しそうな技術書を素敵だと思ったら今必要なそうでも買っておくべき - きしだのHatena
    toshikish
    toshikish 2023/07/29
  • ChatGPTなどLLMを使わずに自然言語でツールを操作する - きしだのHatena

    OpenAIのFunction Callingが出たときに、GPTを使って自然言語でツールを操作するというのをやったんだけど、この程度にGPT使う必要なくない?という感じもしたので、GPTなどLLM使わずに実装してみました。 LLM使わずに実現できることはLLM使わないほうがよさげ。 前回のブログ、これです。 こんな感じで動くようになっています。 ツールのテキスト操作にGPTなんかいらんかったんや! サクサク動くわ。 pic.twitter.com/JAD3grWJGx— きしだൠ(K1S) (@kis) 2023年7月1日 GPT4使ったときはこんな感じ OpenAIのFunction Callingでツール操作を試すやつ、GPT-4だとかなり文脈を理解してくれるし、位置関係も結構ただしく扱ってくれる。しかし遅い。 pic.twitter.com/nkijZpcnP6— きしだൠ(K1S

    ChatGPTなどLLMを使わずに自然言語でツールを操作する - きしだのHatena
    toshikish
    toshikish 2023/07/02
  • OpenAIのFunction Callingを使って自然言語でツールの操作をする - きしだのHatena

    先週、OpenAIから、APIでの返答に関数呼び出しのパラメータを返してくれるFunction Callingが発表されました。 試してみると結構たのしかったのでまとめてみます。 解説動画はこちら youtu.be とりあえず、こんな感じ。 OpenAIのFunction Callingでツール操作を試すやつ、GPT-4だとかなり文脈を理解してくれるし、位置関係も結構ただしく扱ってくれる。しかし遅い。 pic.twitter.com/nkijZpcnP6— きしだൠ(K1S) (@kis) 2023年6月19日 用意したのは3つの関数。 set_position(id, left, top) set_size(id, width, height) set_color(id, color) で、その割に、「中央に」だとか「隣に」だとか、コンテキストを踏まえて座標などを計算して関数を呼び出して

    OpenAIのFunction Callingを使って自然言語でツールの操作をする - きしだのHatena
    toshikish
    toshikish 2023/06/19
  • 空の配列に対するmaxは何を返すか - きしだのHatena

    ちょっと前に「配列中のすべての要素が条件を満たすかどうか判別する関数で、空の配列はTrueを返すべきかFalseを返すべきか」のような話が話題になってました。 まあこれは「Trueを返す」が答えなわけですが、では「配列中の最大値を返す関数で空の配列の場合は何を返すか」が気になりました。 「配列中のすべての要素が条件を満たすかどうか判別する関数」について言えば、簡単に言えばこんな感じ。 まず、配列のすべての要素が偶数であるかどうか判別する関数を考えます。 void main() { int[] data = { 23, 44, 12, 98, 5 }; System.out.println(allEven(data)); } boolean allEven(int[] data) { for (int n : data) { if (n % 2 != 0) return false; } r

    空の配列に対するmaxは何を返すか - きしだのHatena
    toshikish
    toshikish 2023/06/06
  • エンジニアのためのChatGPTプラグイン3選+1 - きしだのHatena

    前のブログでも紹介したのだけど、ChatGPTプラグインのローリングアウトが始まって使えるようになっていて、結局みんな使うのはこの3つくらいかなーとなったので、まとめておきます。 前のブログはこれ。 Bardも世の中のサービスぜんぶGoogle製と思ってるらしい - きしだのHatena 同時に使えるのは3つまでのようだけど、他のプラグインはアメリカ不動産情報など日からは使いづらかったり、作ってみたレベルだったりなので、結局この3つに落ち着くかなーという気がします。 WebPilot これは手放せなくなります。Web記事を読み込んでくれるプラグイン。 ChatGPTには「この記事を要約して」しか入力しなくなりそう。 このエントリを要約してもらっています。 大規模言語モデルの「脳波」が反応してる部分を壊すとどうなるか試した - きしだのHatena ※ 追記 15:21 ぼくのところには

    エンジニアのためのChatGPTプラグイン3選+1 - きしだのHatena
    toshikish
    toshikish 2023/05/16
  • 大規模言語モデルの「脳波」をとって言葉を生成しているときにどこが活動しているのか見てみる - きしだのHatena

    ChatGPTなんかの大規模言語モデルが言葉を生成しているときに、どういう反応が起きているのか気になりますよね。きっと気になる。 ということで、手元で動かせる言語モデルのニューラルネット各層での出力を表示してみました。 GPTにはGPTブロックが複数あって、それぞれのブロックが2層のニューラルネットレイヤを持っています。 モデルを読み込んだあとでこういうコードを動かしてニューラルネットの出力の二乗を足していきます。 for idx, elm in enumerate(model.transformer.h): elm.ln_1.index = idx * 2 elm.ln_2.index = idx * 2 + 1 elm.ln_1.old_forward = elm.ln_1.forward elm.ln_2.old_forward = elm.ln_2.forward def new_

    大規模言語モデルの「脳波」をとって言葉を生成しているときにどこが活動しているのか見てみる - きしだのHatena
    toshikish
    toshikish 2023/04/28
  • GPTの仕組みをちゃんと勉強したい本 - きしだのHatena

    やっぱGPTを仕組みから勉強したい、というをいくつか見つけたのでまとめておきます。 まず理論的な概要。 機械学習からニューラルネットワーク、CNNでの画像処理、トランスフォーマーでの自然言語処理、音声認識・合成、そしてそれらを組み合わせたマルチモーダルと章が進むので、理論的な概観を得るのにいいと思います。 最初は数式が多いのだけど、Σをfor文だと思いつつ、定義が説明文中に埋まってるPerlよりたちが悪い記号主体言語だと思えば読めるけどめんどくさいので飛ばしても問題ないと思います。 深層学習からマルチモーダル情報処理へ (AI/データサイエンスライブラリ“基礎から応用へ” 3) 作者:中山 英樹,二反田 篤史,田村 晃裕,井上 中順,牛久 祥孝サイエンス社Amazon で、もういきなり作る。 トークナイザーから全部つくっていきます。TensorFlowでBERTをつくってGPT2をつくる

    GPTの仕組みをちゃんと勉強したい本 - きしだのHatena
    toshikish
    toshikish 2023/04/25
  • シンギュラリティは来ない - きしだのHatena

    ChatGPTが思いがけずいろいろなことを人間より賢くやっているのを見てシンギュラリティという言葉を使う人が増えたように思いますが、逆に、シンギュラリティは来ないのではという思いを強くしています。 まず、この文章でのシンギュラリティがなにかという話ですが、レイ・カーツワイルが「シンギュラリティは近い」の1章の終わりで「さあ、これが特異点だ」といっている特異点、そのシンギュラリティです。 シンギュラリティは近い―人類が生命を超越するとき 作者:レイ・カーツワイルNHK出版Amazon この特異点は単にAIが人間より賢くなるというだけではありません。人間より賢くなるだけだと、便利な道具が増えるだけなので、大騒ぎするほどの変化は起きません。人の仕事を奪うといっても、蒸気機関ほどでもないですね。印刷機などと並んで、人の生活を変える転換点にすぎず、ただひとつの点をあらわすシンギュラリティには なりま

    シンギュラリティは来ない - きしだのHatena
    toshikish
    toshikish 2023/04/19
  • ChatGPTにブログ全エントリを学習させて「おしえてきしださん」を作る - きしだのHatena

    最近「100万件の文章をChatGPTに学習させて応答チャットを作りました」みたいなニュースがあって、違和感があります。 ということで「ChatGPTにブログ全エントリを学習させて「おしえてきしださん」を作る」としたときに、どんな仕組みになっていて、なぜ「ChatGPTに文章を学習させて」ということに違和感があるか見てみます。 とりあえずこんな感じで、質問に対して答えれてるっぽいチャットができました。 まず、Embedding APIを使って、全エントリのベクトルを得てMongoDBに突っ込んでおきます。 このエントリでやってるので、そのまま使います。 GPTのEmbeddingを利用してブログの投稿に対する近いものを探し出す - きしだのHatena 質問が入力されたら、質問文も同じようにEmbeddingでベクトルをとってきます。 var req = EmbeddingRequest.

    ChatGPTにブログ全エントリを学習させて「おしえてきしださん」を作る - きしだのHatena
    toshikish
    toshikish 2023/04/13
  • ChatGPT時代にはすべてのエンジニアがフルスタックになる - きしだのHatena

    ChatGPTのおかげで非エンジニアでもコードが書けるようになるということを多くの人が言ってますが、すでにエンジニアである人にあてはめると、ChatGPTのおかげで専門分野以外のコードでも書けるようになるということで、つまりすべてのエンジニアがフルスタックになるってことじゃないかと思います。 ChatGPTにコードを書いてもらうと毎回びっくりする いや、ちょっとJavaで袋文字の描画ってどうやるんだったかなーと思ってChatGPTに問い合わせたら、ほぼ完全なコードをリテイク1回で生成したんですね。 こいういうコードが出きました。createGlyphVectorとか知らんわ! // 文字の縁取り g2d.setColor(Color.BLACK); g2d.setStroke(new BasicStroke(5)); // 縁取りの太さを調整 g2d.draw(font.createGly

    ChatGPT時代にはすべてのエンジニアがフルスタックになる - きしだのHatena
    toshikish
    toshikish 2023/04/08
  • このブログの全エントリで学習した極小規模言語モデルを作った - Copilot試してみた日記 - きしだのHatena

    ブログの全エントリを読み込むコード作ったので、とりあえずこれで学習して極小規模言語モデルを作ったら面白かろう、とやってみました。 というとかっこいいけど、まあ形態素解析して続く単語の頻度を覚えておいて、頻度に応じた単語をつなげていうという、Twitter老人会の方ならご存じの圧縮新聞ですね。圧縮きしだのHatenaか。 まあ、ここではてなブログのアーカイブを読み込むコードを書いたので、これで何かしたら面白かろうなと。 GPTのEmbeddingを利用してブログの投稿に対する近いものを探し出す - きしだのHatena それで、以前 圧縮新聞ぽいものを作っていたので、これを改めてはてなブログをデータに作ってみた感じです。 Igoという形態素解析器をつかって圧縮新聞っぽいものを作ってみる - きしだのHatena 圧縮新聞のアカウントは凍結されていますが、雰囲気はこちらを。 圧縮新聞さん迷言集

    このブログの全エントリで学習した極小規模言語モデルを作った - Copilot試してみた日記 - きしだのHatena
    toshikish
    toshikish 2023/04/07