はてなキーワード: キーボードとは
僕は木曜日の朝10時に、昨日(水曜日)の出来事を記録している。
朝の儀式はいつも通り分解可能な位相のように正確で、目覚めてからコーヒーを淹れるまでの操作は一切の可換性を許さない。
コーヒーを注ぐ手順は一種の群作用であって、器具の順序を入れ替えると結果が異なる。ルームメイトは朝食の皿を台所に残して出かけ、隣人は玄関先でいつもの微笑を投げかけるが、僕はそこに意味を見出そうとはしない。
友人二人とは夜に議論を交わした。彼らはいつも通り凡庸な経験則に頼るが、僕はそれをシグナルとノイズの分解として扱い、統計的に有意な部分だけを抽出する。
昨晩の中心は超弦理論に関する、かなり極端に抽象化した議論だった。僕は議論を、漸近的自由性や陽に書かれたラグランジアンから出発する代わりに、代数的・圏論的な位相幾何学の言葉で再構成した。
第一に、空間−時間背景を古典的なマンフォールドと見なすのではなく、∞-スタック(∞-stack)として扱い、その上の場のセクションがモノイド圏の対象として振る舞うという観点を導入した。
局所的な場作用素の代数は、従来の演算子代数(特にvon Neumann因子のタイプ分類)では捉えきれない高次的相互作用を持つため、因子化代数(factorization algebras)と導来代数幾何(derived algebraic geometry)の融合的言語を使って再記述する方が自然だと主張した。
これにより、弦のモードは単なる振動モードではなく、∞-圏における自然変換の族として表現され、双対性は単に物理量の再表現ではなく、ホモトピー的同値(homotopical equivalence)として扱われる。
さらに踏み込んで、僕は散逸しうるエネルギー流や界面効果を射影的モチーフ(projective motives)の外延として扱う仮説を提示した。
要するに、弦空間の局所構造はモチーフ的ホモトピー理論のファイバーとして復元できるかもしれない、という直感だ。
これをより形式的に述べると、弦場の状態空間はある種の導来圏(derived category)における可逆的自己同型の固定点集合と同値であり、これらの固定点は局所的な因子化ホモロジーを通じて計算可能である。
ただしここから先はかなり実験的で、既知の定理で保証されるものではない。
こうした再定式化は、物理的予測を即座に導くものではなく、言語を変えることで見えてくる構造的制約と分類問題を明確にすることを目的としている。
議論の途中で僕は、ある種の高次圏論的〈接続〉の不変量が、宇宙論的エントロピーの一側面を説明するのではないかと仮定したが、それは現時点では推論の枝の一本に過ぎない。
専門用語の集合(∞-圏、導来スキーム、因子化代数、von Neumann因子、AQFT的制約など)は、表層的には難解に見えるが、それぞれは明確な計算規則と変換法則を持っている点が重要だ。
僕はこうした抽象体系を鍛えることを、理論物理学における概念的清掃と呼んでいる。
日常についても触れておく。僕の朝の配置には位相的な不変量が埋め込まれている。椅子の角度、ノートパソコンのキーボード配列、ティーカップの向き、すべてが同相写像の下で保存されるべき量だと僕は考える。
隣人が鍵を落としたとき、僕はそれを拾って元の位置に戻すが、それは単なる親切心ではなく、系の秩序を保つための位相的補正である。
服を着替える順序は群作用に対応し、順序逆転は精神的な不快感を生じさせる。
ルームメイトが不可逆的な混乱を台所に残していると、僕はその破線を見つけて正規化する。
友人の一人は夜の研究会で新しいデッキ構築の確率的最適化について話していたが、僕はその確率遷移行列をスペクトル分解し、期待値と分散を明確に分離して提示した。
僕はふだんから、あらゆる趣味的活動をマルコフ過程や情報理論の枠組みで再解釈してしまう悪癖がある。
昨夜は対戦型カードのルールとインタラクションについても議論になった。
カード対戦におけるターンの構成や勝利条件、行動の順序といった基礎的仕様は、公式ルールブックや包括的規則に明確に定められており、例えばあるゲームではカードやパーツの状態を示すタップ/アンタップなどの操作が定式化されている(公式の包括規則でこれらの操作とそれに付随するステップが定義されている)。
僕はそれらを単純な操作列としてではなく、状態遷移系として表現し、スタックや応答の仕組みは可逆操作の非可換な合成として表現することを提案した。
実際の公式文書での定義を参照すると、タップとアンタップの基本的な説明やターンの段階が明らかにされている。
同様に、カード型対戦の別の主要系統では、プレイヤーのセットアップやドロー、行動の制約、そして賞品カードやノックアウトに基づく勝利条件が規定されている(公式ルールブック参照)。
僕はこれらを、戦略的決定が行なわれる「有限確率過程」として解析し、ナッシュ均衡的な構成を列挙する計算を試みた。
また、連載グラフィック作品について話題が及んだ。出版社の公式リリースや週次の刊行カレンダーを見れば、新刊や重要な事件がどう配置されているかは明確だ。
たとえば最近の週次リリース情報には新シリーズや重要な続刊が含まれていて、それらは物語のトーンやマーケティングの構造を読み解く手掛かりになる。
僕は物語的変動を頻度分析し、登場人物の出現頻度や相互作用のネットワークを解析して、有意なプロットポイントを予測する手法を示した。
夜遅く、友人たちは僕の提案する抽象化が読む側に何も還元しない玩具的言語遊びではないかと嘲笑したが、僕はそれを否定した。
抽象化とは情報の粗視化ではなく、対称性と保存則を露わにするための道具だ。
実際、位相的・圏論的表現は具体的計算を単に圧縮するだけでなく、異なる物理問題や戦略問題の間に自然な対応(functorial correspondence)を見出すための鍵を与える。
昨夜書き残したノートには、導来圏のある種の自己同型から生じる不変量を用いて、特定のゲーム的状況の最適戦略を分類するアルゴリズムスケッチが含まれている。
これを実装するにはまだ時間がかかるが、理論的な枠組みとしては整合性がある。
僕の関心は常に形式と実装の橋渡しにある。日常の儀式は形式の実験場であり、超弦理論の再定式化は理論の検算台だ。
隣人の小さな挨拶も、ルームメイトの不作法も、友人たちの軽口も、すべてが情報理論的に扱える符号であり、そこからノイズを取り除く作業が僕の幸福の一部だ。
午後には彼らとまた表面的には雑談をするだろうが、心の中ではいつものように位相写像と圏論的随伴関手の組を反芻しているに違いない。
私はその夜静かに関西国際空港に降り立った。携帯のSIMをカウンターと自販機でひとつずつ買い、空港内の一時預かり所ですぐに荷物を預け、翌日の午後遅くに取りに来る旨を伝えた。小さな鞄には電子機器が四つ入っている。身につけるものは、バッテリーを取り外しておいたSIMなし格安携帯(数日前に買ったばかりだ)とポーチひとつ。対岸の小さな町に飛び込みで宿をとることした。電車の降客は私と2、3人。地元の人間が見れば、私は関西人ではないとすぐ分かる顔をしている。うろうろしていると、早速「お出迎え」の車がメインストリートから細い路地へとわざわざ鋭角にターンして尾行してきたので、物陰に隠れる。目星をつけたホテルの前の駐車場には見張りの車が停車していたので、知らないふりをして行きすぎる。初めての町だが、行き当たりばったりに歩き回った挙句、駅から離れた場所に客のいない静かなバーを見つけ、ウィスキーを飲んで時間を潰す。
日付が変わる少し前にバーを出、宿のあるらしい方角へ歩く。宿に入ろうとした時、住宅街の十字路の向こうから、ボックスカーが一台、なにかを探しているかのように徐行してやってきて、止まった。生垣のそばに隠れたつもりなのだが、どうやらライトの向こうに見つかってしまったらしい。直進するそぶりだったのが、急に右折して去った。ナンバープレートを私に見られたくないのだ。別の宿を見つけ、この日は終わり、旅の疲れを癒そうとした。
翌朝、時差ぼけと寝不足の目をこすり、今年一番の早起きをして、再び空港に向かう。出張中のビジネスマン風の顔をして、通学中の小学生の後ろを歩く。預けた荷物を受け取り鉄道駅に向かおうと、空港ビルの吹き抜けの上階をふと見ると、手すりにもたれた男が下を見て何か携帯で指図をしていた。見張りだ。電車に乗り、念のため、中から隣の車両に移動した。すると、ひとりの男が目についた。まだ若さがかすかに残る、アメリカ人と思われ、こざっぱりした軽装で、イヤホンをつけ、手元の携帯を見ている。荷物はない。空港ホテルに泊まって文字通り手ぶらで観光に行く外国人はそうそういないだろう。この男は見張りの仲間と考えて差し支えない。おそらく携帯はグループ通話モードになっており、イヤホンから指図が流れるのだ。じっと見ていると、男は気まずそうに少し下を向いた。元の車両に引き返し、男から見えないことを確認する。予告は受けていたが、「今度のチーム」は手際がいい。これは逃げられないと思った。私はロンドンからの帰途アジア系の航空機で上海を経由したのだが、上海で乗り込んで来た20代のアメリカ人の男が私を見てニヤリとして着席したのを思い出した。
降車予定のいくつか前の駅に停車中に、ポケットの携帯が鳴った(機内モード)。私はここで降りることを迷っており、それを見透かされたかのように思い動悸がしたのだが、実は九時にセットしたタイマーだった。電車のドアが閉まる瞬間にホームへ身を投げ、私のせいでドアが再度開かなかったこと、および、隣の車両の男が降りなかったことを確認し、駅を出て停車中のタクシーに乗り込んだ。
「ヨドバシカメラへお願いします」先に着いたアメリカ人の男やその仲間がXY筋(どこだったのだろう?)を追尾する手筈は万全だろうと思ったが、仕方ない。タイミングよく開店と同時にヨドバシカメラに入り、入り口付近に電子機器の入った鞄を置いて、新しい携帯を買った。見上げると、レジの上の防犯カメラが意地の悪い目つきでこちらを見ていた。電源を切ってあるが、新携帯の設定を完了しないと機内モードにできないはずだ。警備員に見つかるかと思ったが、入り口に置いた鞄は盗まれず、日本は治安がいい。
大阪駅からP駅まで電車に乗る。P駅で電子機器を裸でロッカーに預ける。バスで役所の近くまで行く。降りると、大通りの路肩に車が止まり、私が近づくと発進した。役所の小さな駐車スペースにも見張りと思われる車がいた。海外勤務を終え、帰国手続きに本籍地発行の戸籍抄本が要るのは周知のことだと思う。
私は長期滞在のホテルを必死に探したのだが、残念ながらどれも予約で埋まっていた。仕方なく、この日の宿をオンラインで予約した(ウォークインで空きを尋ねるべきだった)。夕方、宿に着くと、部屋から大通りが見下ろせる。通りの両側には停車中の車が何台があり、気になる。例の格安携帯のバッテリーを入れ、しばらく設定をしていると、Bluetoothがオンになっていることに気づいた。先ほどまでオフにしていたにも関わらずだ。さらに、誰かの機器とBluetooth接続されていた。部屋に入った時には空いていた隣の部屋に、誰かいる。壁越しにキーボードを叩く音が微かに聞こえるのだ。「ようこそ日本へ」という訳だ。私はフロントに電話し、部屋を替えてもらった。階も違う。業務用階段の側だ。外の車が気になる。しばらくして、廊下に出たところ、ホテル従業員が業務用階段へと続く扉の向こうに消えるのを見た。客入りの良いこの時間帯に、妙ではないか。私は、ホテル従業員がグルである可能性を考え、ホテルを出ることにした。ロビーでソファに座り次の手を考えていると、20代の背の低いアメリカ人の男が宅配ピザの箱を抱えて外から入って来て、上階に向かった。つまり、「鳥が逃げた」という訳だ。通りに停めた車で見張っていたのだろう。ホテルを出て15mほど歩くと、近くの路肩の白いワンボックスカーが急発進した。私はこの時、2種類の人間に追われていることをまだ知らない。タクシーで警察署に向かう時、外国人の運転する高級車が二つ隣の車線にいるのを見た。
繁華街をぶらぶらして、カフェのテラス席で休憩したところ、側道から若い日本人の男の運転する車が目と鼻の先で停車した。通りに出るつもりはないらしい。私はこのときそのナンバープレートを新しい携帯で写真に撮ったのだが、交番で写真を警官に見せると、その写真は「画像が歪んで」番号が読めなかった。新しい携帯が、早速ダメになったのだ。
色々気にしても仕方がないので、適当な店に入り、久々の海鮮を楽しむことにした(中略)。ただし、押し入られて身の危険がないとも言えないので、他の客が引けたとき、すぐに出た。断言できるが、ほろ酔い未満だ。料理には満足した。
少し物足りなかったので、大通りから中に入ったところをほっつき歩いて、飲める店を見つけた。途中、誰かを探しているらしい様子のワンボックスカーを見つけた。カウンターで飲んでいい気分になった頃、一台の車が店の前で急に止まった。動かない。外は狭い一方通行の道で、しかも店の前を塞ぐように止まる車はタクシー以外通常ないはずだ。タクシーより車高が高い。これはまずい。逃げ場はない。私は、格安携帯の緊急通報ボタンを押した。すると、車は発進した。
携帯で調べるわけにもいかないので、酔い覚ましに、歩いて終夜営業のファミレスを探した。結局、マクドナルドに落ち着いた。この夜、私は初めて、なぜこのような不思議な目に自分が遭っているのかを知った。マクドナルドのwifiは無料で利用できるはずだが、「パスワード入力」を求められる。なぜか電波の入りが悪い。2階に上がる。どうやら、無料wifiを使わせまいとする勢力と、それを解除しようとする勢力が、電子的に腕相撲をやっているらしい。私は後者の「手助け」をしようとした。結局、早朝になってもwifiが使えることはなかった。
早朝、忠告に従い、急いで店を出る。危ないのだ。タクシーで向かう。預けた電子機器を回収しようと駅で待っていてもらった。ところが、引き出せない。預けたロッカーの番号を電子的に認証して鍵が開くのだが、「その番号が選択肢として存在しないため選べない」。どうやら、私の預けた荷物だけが引き出せないように電子的に操作されているらしい。見ると、他のロッカーは全て空だ。
あきらめて、コネのある長期滞在用のホテルにタクシーで向かう。
遠距離だ。
10年前にスタバでMacを使っていたけど、最近富士通のLIFEBOOK(14.0型/Core Ultra 7/32GB)を買ってめちゃくちゃ良い。何よりも軽い。本体で630gぐらい。この軽さは革命的。キーボードも良い。業務でMacBook Pro (14インチ/M4/48GB)やたまに以前使っていた MacBook Air M1使っているけど、何が良かったのか分からなくなってきた。windowsでwsl使えば、linux環境作れるし。スタバも行くけど、どちらかといえば最近行きたいのはすかいらーくのラオハナ。10年前にスタバでMacを使っていた青年は微妙に国産のものに回帰しているが、あのとき周りに居た人たちは元気にしているだろうか。
タッチタイピングができる人の割合は、2018年の調査では約31.8%(7割はできない)とされていますが、その後の世代間調査では、10代学生のスキル向上や、20〜30代社会人の割合が高い傾向が見られます。高校生(2021年調査)では、ブラインドタッチができている人は**17〜26%**という結果が出ています。
20代・30代:約30%を超え、タッチタイピングができる人の割合が高い傾向にあります。
50代・60代:20%前後にとどまっており、高齢になるほど割合が低い傾向があります。
10代:2022年の調査では、小学5年生のタイピングスキルが2015年と比較して約8倍に向上しており、10代のスキルが向上していることが示されています。
とある外国語の試験を受けることになり、特に試験前の3ヶ月は集中して勉強した。いつもだったら無駄かもしれない買い物は避けるところだが、今回は集中力を維持するために金に糸目をつけないようにしようと、色々と手を出してみたので紹介してみる。
最近の語学の教材はMP3ファイルをダウンロードできるものが多くて便利だが、昔のカセットテープのように、ちょっとだけ巻き戻すという操作が難しい。DJ 2GO2は、いわゆるDJのターンテーブルを超小型にしたもの。DJ用のソフトウェアに音声教材を読み込ませ、波形を見ながら再生位置を探せるほか、再生速度を変えたり、同じ箇所を繰り返し再生することも直感的にできる。マウスや左手デバイス(キーボード)とは違いMIDI(楽器の仲間)なので、前面でブラウザやKindleを開きながら、裏で開いているdjay Proを操作できるのも良かった。
普通のイヤホンを何時間も耳に入れていると蒸れるし、周囲の音(例えば家族が呼ぶ声)も聞き逃す。nwmのイヤホンは耳を塞がないタイプのイヤホンで、どちらの問題も解決してくれる。一応、骨伝導のイヤホンも持っているのだが、骨伝導だと低い声が再生されたときに耳が痒くなるので、いつしかnwmしか使わなくなってた。
学習ではQuizletという単語カードを生成してくれるサービスを使っていたが、このサイトに登録するために、キーボードで入力しようとすると本が閉じてしまうのがストレスだった。「本に寄り添う文鎮」という名前の文鎮は、ちょうどいい重さで、開きっぱなしにしておけば、中断したページから再開もできるのもよかった。
プログラミングとは、勉強も運動もスマブラも下手なクソ隠キャ中学生が「俺もパソコン1台で凄い技術者になって…!」とワクワクしながら始めるものの思ったより普通に難しいし学校の試験で出たような知識要求されるしで3日で放り投げ、10数年後にnoteで「お前らは絶望的にプログラミングに向いてないからやめろ」なんて記事を書くだけのザコに成り下がる、夢と希望に溢れた技術である。
近年ではパソコンのスペックの上昇にともないできることも増え、どこのご家庭にもあるRTX2080で簡単にディープラーニングもできるようになった。Unityで3Dゲームをバリバリ動かしてもブルースクリーンは出ない。やっぱ世界を広げるのは小賢しい知恵よりもスペックの暴力だぜ。
開発環境や言語も選択肢豊富で、エディタもかつては有料クラスでも手に入らなかったような贅沢な機能が満載のものが出回っている。Eclipseとか今考えるとよくあんなので開発できてたな。
いまや小学生からおばあちゃんまでアプリ作りに熱中し、高校生はIoTとかやり始め、大学生は商業レベルか?ってレベルのものをネットで発表し、私はウェブアプリのスマホでのレイアウト崩れひとつすら直せず静かにエディタを閉じてnoteで過激タイトル記事を書いている。
掛け算に順序があると思っているような知能の下級雑用係(自分のことを教育専門職だと思い込んでいる)ですら「小学生にプログラミングを教えるぞ!」と意気込んでいる。やめろ。お前らには無理だ。無理だからマジでやめろ。考え直せ。無理だって。掛け算に順序つけないと相手に教えられないレベルのやつがプログラミング教えるのマジで無理だって。算数とは次元が違うって。「ピーチ姫いつも簡単に誘拐できるし今度はベヨネッタも誘拐してみるか」ぐらいの無謀さだって。やめとけ。マジでやめろ。
まあそんなこんなで入り口はめちゃくちゃ広く、入門するのはマリオカートより簡単である。話逸れるけどSwitchのマリオカート、運転アシスト機能ついて初心者でもコース完走できるようになったから心折れちゃった人ももう一度チャレンジしてみてね。
それとは特に関係ないんだけど、大学行ってた時ティーチングアシスタント(TA)っていう授業のお手伝いさせられたのよね。ちゃんとお金出るやつ。
学部の3年か4年から始まって、院の1年か2年までやってて、途中で休学挟んだから、ええと、あー、うん、数年間TAやってたんよ。数学とプログラミングのコマ。CとOctaveとかいうやつ。Cのほうは情報学科で、Octaveは違う学科。JavaとかC++のコマはTA入れさせてもらえなかった。
プログラミングの実習は週2コマ(連続)あって、情報学科なら必修科目。なのでサポートは相当手厚く、先生とTAが絶え間なく机間巡視し、わからないことがあればセンパイがなんでも答えてくれるというわけだ。授業外でもサポートはしており、わからなければ先生や研究室にいる学生に好きなだけ聞きにいっても良いということになっていた。必修だから落とされたら困るしな。
2コマだから3時間 * 15回で、45時間。そして私の時は2年まででC/C++/Javaと必修だった(今はなんの言語かは知らない)ので、その3倍、135時間は最低やることになる。プログラミング実習以外にもプログラミング触る授業多いから実際はもっと多い。宿題やる時間もあるので実際はもっともっと長くプログラミングに触れることになる。卒論書く時期に入ると、テーマによっては書く人はさらに書くので、もっともっともっともっと長い。
これだけ時間をかければほとんどの人がプログラミングできるように……ならない。むしろできない人の方が多い。なんで。why。教えて。
会社になるとさすがにプログラミングできるできないは死活問題である。
「今日から入ったxxでーす。業界未経験ですがよろしくおねがしまーす。さっそくなんですけどPythonのここわかんないんですけどどうすれば……あっそうすればいいんですね。次はここなんですけど……なるほど!ありがとうございます。じゃあまた明日ー」
いやー社会人にもなると熱意が違うね。学生なんかわかんなくてもほとんど聞きに来ないのにな。こりゃガンガン伸びますわ。私も社会人1年生でPythonなんて3秒ぐらいしか触ったことないから適当答えてるけど。
「ちょっとお時間よろしいですか?」「いやちょっと今忙しいから後になっちゃいますわ。すんません……」
そんなこんなで1週間ぐらい放置してしまった。やべー絶対嫌われる。どこまで進んだかな……?えっまだそこ?進んでなくない?
もしかしてこれ全部教えないとダメなやつか。そりゃ大学4年間プログラミングやったやつでもプログラミングできないんだから、そうか。よく考えると当たり前だよな。
プログラミングをやめろ
大学4年間と大学院2年間プログラミングやったやつでもできないし、会社で毎日8時間を数週間プログラミングについやしてもできないやつはできないし、そもそも人類というのはプログラミングできない可能性がある。
少年少女たちに「プログラミングはいいぞ!自由にものが作れて達成感がある!頭が良くなった気分にもなれるし!」と吹聴してまわんのもいいけど、6年間情報科学について勉強したようなやつの大半がプログラミングできないんですよ。それもごくごく初歩的な部分。
野球とかサッカーなら、まあ友達との試合には参加できなくてもごく稀にバットにボールを当てたり、ボールを1回あらぬ方向に蹴ったり、ぶっちゃけ周りとのレベル差で楽しくなくてすぐやめちゃうだろうけど、なんとか基礎の一部ぐらいはできるじゃないですか。
ピアノとかダンスでも、猫踏んじゃったをごくごくゆっくり弾くぐらいはできるかもしんないし、学芸会の振り付けを10秒ぐらいは踊れたりできるかもしれない。その後やっぱ周りのレベル見て諦めちゃうかもしんないけどさ。
プログラミング、6年やってミットを頭にかぶってるバッターとか、鍵盤蓋の上から殴って音鳴らそうとするやつとか、まずそういうレベルのやつが大量発生するんですよ。だいたい7割ぐらいの率。どうすんだよこいつら。私の教育の問題か?マジで?本当に?
プロが練って考えて凝縮した本や授業、センパイたちによる指導。それらを結集して得られるはずのものが7割ぐらいどっかに消し飛んでる。無駄だろこれ。
今からプログラミングやろうとしてるやつ、お前は確実に向いてないからさっさと諦めて刺身にタンポポ乗せる仕事に戻ってくれ。参加しても鍵盤蓋叩き割るやつと同じ病室に入るだけだ。
プログラミングをやめろ。
ぼくはこう思うんですよ
そもそもなんで大の大人がそんな両手にバット持ってセカンドに立ったりゴールの方をボールのところまで動かす奇行に走るんだろうな。わかんねえや。
綺麗な分析はできないけど、いわゆる「できない」やつが共通して言ってたフレーズがある。
「ぼくはxxxだと思ってるんですけど、動かないんですよ」
うん、そうだね。そう思うんだ。でも動いてないじゃん。じゃあ違うんじゃない?モニターに「にらみつける」やってもバグは取れないし防御力下がるだけだぞ。
まず根本的に考えと事実が違ってるって結果出てるじゃん。じゃあもう考え変えちゃえば早くない?
名言の引用は好きではないけど、「プログラムは思った通りには動かない。書いた通りに動く」って言葉がある。実に名言だと思う。次点で好きなのが「ある問題を解決しようと正規表現を使うと問題が2つに増える」かな。
お前が何を思っているかはプログラミングにおいて一切影響しないんだよ。お前が何を書いて、コンピュータがどう処理したか、それが全て。
深く考えないことについてぎゃーぎゃーいうやつもいるけどプログラムなんてまず最初は動けばいいんだから何も考えずに次試せばいいだろ。んで3回ぐらいは自分で思い浮かんだの試して、全部ダメだったら調べるとか先生に聞いてみるとかさ。逆に1発で通ったら自分の思考見直して理解深めるとかさ。
ドキュメントとかあんまり理解できない初心者のうちは、とにかくお試しと修正のサイクル回すの重要で、「これがこうだから動くはず」というカードを3種類ぐらい作って全部片っ端から試すのが早いと思うよ。モニターをにらみつけるな。
お前がどう思ってるかよりも、まずはお前の書いたプログラムがどう動いているか(どう動いていないか)を確認するのが先だ。動かなかったら考えが違う、はい次のプラン、はいその次のプラン、はい次。
この「ぼくはこう思ってる」が出てくるの、なんの教育の成果なんだろうね。お前の気持ちなんてどうでもいいって現国でも数学で散々教えられただろ。
Error: variable 'a' is undefined, line 24
↑のエラーは架空のエラー文(英語下手でも許して)だけど、エラー、出るよね。プログラム組んでたら。んでやっぱいるのよ。エラーを「にらみつける」やつ。解決しねえって言ってんだろ。
「エラー出たんですけど、どうすればいいんですか」
「エラーにはプログラムがなぜコンパイル通らないかの原因がそのまま書かれている。例えば今出ているError: variable 'a' is undefined, line 24は、24行目の変数aが未定義ということを示している。事前に変数aを定義していないか、打ち間違えてsになっているとかではないのかな?」
だいたいが「腑に落ちねぇー」みたいな顔する。まあ、一気に喋りすぎたしな。疑問点1個1個潰していくか。
「何か疑問点ありそう?変数ってなにー、とか、定義ってなにー、とか」「ないです。わかりました!」
わかったのか。よかった。またモニターをにらみつける開始。なんでだよ!!!!「お前顔にチョコついてるぞ」って言われたらチョコ拭き取るだろ。変数aが未定義ですねって言われたら変数a定義すりゃいいだろ。
でもプログラミングド下手なやつ(全人類の7割ぐらい)は、エラーをにらみつけてる。ずっとにらみつけてる。防御力下限まで下がったかな。にらみつけてて何が変わるんだよ。
「英語読めなくて……」
いや「a is undefined」なんて「He is Superman」ぐらいの英語だろなんで読めないんだよ。お前この大学どうやって入ったんだよ。たしかどの入試方式でも英語あっただろ。単語わからんかったらググれ。
「aが未定義って書いてあるんですけど、ここのfor文の私の考えが間違ってるのでしょうか」
いや24行目のaって書いてるだろ。まずなんでそこ無視するんだよ。お前がfor文で使ってんの教科書通りのiだろ。24行目ってわかるか?for文あるの40行目あたりだよな?aとiが違う文字ってわかるか?
「さっきのエラー直したら新しいエラーが出たんですけど、どうすればいいですか」
千尋!贅沢な名だねえ
変数に名前をつけろ。関数に名前をつけろ。クラスに名前をつけろ。全てに名前をつけろ。
C言語の古い教科書だと「a」とか「b」とか「i」とかで書いてるけど、そんなの人間が読めるわけねえだろ。冷静に考えろ。「input」「output」「index」とかにしとけ。
2重for文の変数名i, jにしたら絶対途中で打ち間違えるだろ。お前は打ち間違える。そういうやつだ。2重ループなんてどうせ行列計算の課題だろ。rowとcolumnにしとけ。これで打ち間違っても気づくし、それぞれに意味が付いてくる。
ちなみに同じ長い名前にも優劣がある。「result」よりも「sum」のほうが強い。「result」はなんの結果かわからない(全ては結果であるので)が「sum」は合計値であることがわかるからだ。「password」と「plainPassword」なら「plainPassword」が勝つ。暗号化されていないパスワードであることがわかるので、情報量が多いからだ。
ただし例外はいくつかある。「tmp」は一時変数であることが(プログラマにとって)明らかだ。「dir」はディレクトリであることがわかる。「src」「dist」あたりもよく使われる。このあたりは短くていいんじゃねーかな。
でも、この前温度センサ扱うプロジェクトで「tmp」って変数名使って温度(temperature)と脳内で混線してバグって発狂してた同僚いたけど。そういうときは名前長くするか別の名前使おうな。
関数の名前なんて「calcAverageFromArray」ぐらい長くしていいから。「myFunc」とかしなくていいから。「fetchJsonDataFromUniversityInternalServer」とかでいいから。マジで。いやこれ本当に。
そもそも今時ディスプレイでかいし、識別子なんて先頭数文字打ったらエディタが補完してくれるし、短くするメリットがない。
それでも名前が長いと感じる?関数がでかすぎるんじゃないか。細かく処理を分けるとかしてみろ。「combineArrayAndFindMax」関数は「combineArray」と「findMax」に分割したらいいと思うぞ。名前が長いと思っても名前を削るな、機能を分割しろ。自然と名前が短くなる。
それかシンプルでかっこいい名前を見つける。「convertEvilHtmlToPeacefulText」は「sanitize」に置き換えることができる。イカす名前だ。
プログラミングできない奴はマジでこれらのことをやらない。ずっとaとかbとかzとか使ってる。お前それ自分で読めんのか。読めねえだろ。myfuncってなんだよ何するんだよ。お前自分で理解できてんのかそれ。
それでも頑なにaとかbとか使う。なんでだよ。
動作原理わからず書き散らすな。動作原理っつってもそんな深いところじゃなくて言語表面上レベルの動作な。
リテラルは値を作成して、代入は値に名前をつけている、とかその程度のレイヤー。メモリがどうこうとかはいらんと思う。あっでもポインタのときはいるか……。めんどくせえな。
まあ動作原理っていうか自分が何やってんのか理解してくれって程度の話になるんだが。
例えばfor文で処理50回まわすとき、「50回分の処理を行なっている」ではなく「ループ開始時に変数を初期化。条件判定して成立していれば文の中を実行する。条件変数の値を変化させてまた条件判定からやり直す」ぐらいの粒度で捉えててほしいかな、という気持ち。
これはfor文で詰まる人がやたら多かったからだ。彼らはfor文をアトミックな操作だと思っていた。つまりfor文はひとまとまりの命令であり、長いfor文とprintfの間に粒度の違いはないと思っていたらしい。
つまり、「for文の中でエラーが起こる」という事象がほぼ理解できない。forはアトミックであり、内部など見えないのだから。じゃあお前が今書いたfor文の中身はなんなんだってやんわり聞くと「さあ…?」みたいな反応が返ってくる。はあ。
関数についてもなかなか誤解が多かった。関数「sum_array(a, b)」と関数「average_three_numbers(a, b, c)」は全く別の原理で動いているのだと。ここでの「全く別の原理」というのはシグネチャが違うとか実装が異なるとかそういう意味ではなく、コーラを飲んでゲップが出る原理と糸電話で声が伝わる原理ぐらいの全くの別、という意味である。
彼らは関数ひとつひとつについて「新しく原理を学習」していたのだ。マジかよ……。どうやったらそんな発想に行き着くんだろう。そりゃ時間かかるわな。
そのため、関数が値を返す(または返さない)ということも理解できておらず、「関数の戻り値と関数の戻り値を足す」とか「関数の引数に関数の戻り値を直接渡す」とかやりだすと大パニックになる。メソッドチェーンとかやった日には大学潰れると思う。ただ、これはC言語が悪い部分もあると思う。配列とかいじりだすと、初心者が書けるレベルの関数だとあんまり値返さないしな。
たのむ、他のはできなくてもこれはできてほしい。自分が何をやりたいのかは理解してほしい。流石にお前のやりたいことなんて他人にはわからんぞ。
「配列の中の数値の合計値を求めたいんです」とか「名前と身長と体重をひとつにまとめた構造体が作りたいんです」とか。簡単なのでいいから。
「いま何やろうとしてどこで詰まってる?」って聞いても「……?」みたいな反応されたら困るんだよ。
例えば「キーボードから数値を10回入力し、それぞれの値を配列に格納して、最後に配列の値を逆順に表示せよ」みたいな問題が出てきたときに、「キーボードから値を入力する」「10回繰り返す」「配列に値を格納する」「配列の値を逆順に表示する」に分解できると思うんだけど、自分が何やりたいのかわからない奴はまずこれができない。
彼らには「キーボードカラスウチヲジュッカイニュウリョクシソレゾレヲハイレツニニュウリョクシテサイゴニハイレツノアタイヲギャクジュンニヒョウジセヨ」に見えている。
かろうじて「キーボード」「ハイレツ」あたりの単語は拾えるらしく、標準入力から値とったり配列を作ったりはしてるんだけど、そこから先に進まない。モニターにらみつけてる。またにらみつけるかよ。
あれだ、算数の文章題できなくてとにかく文章に出てくる数値足したり引いたりするやつ。あれのプログラミング版。文章が読めない。
こういう人にはメモ用紙取り出して、まず文章が何について言ってるのか、どういう工程に分けることができるのか、今後も同じことが起こったときにどうやって分けるのか。みたいなのを教えるんだけど、大抵あんまりしっくりこないらしく、成功したことは皆無。なんとかうまく教えたいんだが。
もうこのあたりになってくるとプログラミング関係なくね……?ってなるんだけど、意外とそういうプログラミング関係ないところで詰まる人めちゃくちゃ多いよ。
今すぐプログラミングをやめろ
ChatGPTが言うには
以下のようにカテゴリごとに分け、
ざっくりと「Temu向き(価格・量重視)」/「SHEIN向き(デザイン・流行重視)」で分けていきます。
⸻
アイテム 向き
折りたたみ洗濯かご Temu
詰め替えボトルセット Temu
靴用乾燥機 Temu
靴べら(おしゃれ系) SHEIN
クッションカバー SHEIN
花瓶 SHEIN
トレイ・小物置き SHEIN
⸻
👕 ファッション・服飾(25)
アイテム 向き
無地Tシャツ Temu
スウェット SHEIN
パーカー SHEIN
トレーニングウェア Temu
ジョガーパンツ SHEIN
デニム SHEIN
カーディガン SHEIN
ジャケット(軽め) SHEIN
冬用アウター SHEIN
ソックス Temu
下着セット Temu
ニット帽 SHEIN
バケットハット SHEIN
トートバッグ SHEIN
リュック Temu
スニーカー SHEIN
サンダル Temu
ベルト SHEIN
サングラス SHEIN
腕時計 SHEIN
ピアス SHEIN
ネックレス SHEIN
ヘアゴム Temu
⸻
アイテム 向き
ぬいぐるみ SHEIN
キーホルダー SHEIN
ステッカーセット Temu
ゲーミングマウスパッド Temu
⸻
☕ キッチン・食まわり(15)
アイテム 向き
シリコン製保存袋 Temu
計量スプーンセット Temu
お弁当箱 Temu
ティーカップ SHEIN
水筒 SHEIN
コースター SHEIN
ランチョンマット SHEIN
キッチンタイマー Temu
ボトルブラシ Temu
テーブルクロス SHEIN
⸻
アイテム 向き
プランター Temu
散水ホース Temu
ミニじょうろ Temu
ガーデンライト Temu
ハンギングポット SHEIN
人工芝 Temu
庭用チェア Temu
⸻
アイテム 向き
イヤホン Temu
充電ケーブル Temu
電源タップ Temu
USBハブ Temu
ワイヤレスマウス Temu
⸻
アイテム 向き
ドライフラワー SHEIN
キャンドルホルダー SHEIN
フォトフレーム SHEIN
⸻
合計結果
• Temu向き:約 55アイテム
• SHEIN向き:約 45アイテム
⸻
ざっくり言えば、
買おうかめっちゃ迷ってたやつ
めっちゃといっても1週間ちょいだけど
せいぜい3000円くらいのやつなんだけどさ
ほんとはクオリットで訳アリ品を10%引きクーポンで買おうかと思ってたんだけど結局だいたい2万するから買わんかったんだよね
なんでノートかってーと今度4日出張あってそのとき毎日のルーティンができなくなるのが嫌だったから
レンタルも考えたけど個人でパソコンレンタルってなかなかないし、
あったとしても1週間借りる金額考えたら中古PC買った方がいいやってなる感じだったからさー
会社で触ったことはあったけど改めて触るとまず軽さに驚いたよね
去年は2キロくらいのノートPCと、一部キーボード壊れてるから外付けキーボードも持ってってめっちゃ重かったからさあ
こっちは中古で3000円 かつ700gくらい
安い理由は古いモデルってのもあるんだろうけど白点ありってなってたのがでかいように見えた
白点理由での返品はできないらしいけど、
それ以外の初期不良なら、天下のゲオで半年保証つきってのがクソでかい
その白点ってのが気になってお店で買う前に電源コードつないでチェックできませんかってきいたけど、それはダメらしい
そんな殺生なと思ったけどまあよく考えたら中古ゲーム機も別に事前動作確認とかさせてくれないしな
だからなかなか踏み切れなかった
最悪画面のほとんど全部が白点で画面見えないとかもありえるってことだし
10年前くらいにソフマップで3マンくらいのリース落ちノートPCかったときはイヤホンジャック壊れてたことに気づかなかったんだよなー
んでさっき確認したら白点って1ドットだか4ドットだかのほんとに点だった
これはラッキーだった
フリマとかオークションで調べても同じタイプのやつは余裕で1マン超えてるし
なんなら電源アダプタだけで2500とかだしな
しかもこのレッツノート、タッチパネル対応タイプの液晶なんだよな
あと最後の懸念点が無線ラン非対応モデルもあるってのだったけど運よく対応モデルだった
唯一の欠点はバッテリー、あと数段落ちてストレージ容量かな 128GBしかないから
確認はしてないけど多分死んでるんだろうな
まあ持ち運びながらなんかやることはほぼなくて電源ある環境でやるだろうからそこは多分大丈夫
いやーよかったー
クオリットの10%クーポン、2000円くらい割引になる計算だったけど、
そのクーポン金額プラスアルファで1台中古かえるとかマジラッキーだったわ
とりあえずchrome入れた
あとルーティンでアクセスするサイトのブックマークだけしとくかな
私としては国産なり日本発のLLM開発を諦めてはならないし, その可能性は十分にあると信じています. 既に出ているものも多数ございますし.
本エントリはそれとは全く別の,
「国産LLMの人」という方についてです.
---------
色々思うところがありまして.
例えば,
と繰り返し主張しておられる.
そのような単純な活性化関数では過学習か誤差が噴出するかの二択でしょう. 実際, 氏のツイートは正にその状態を示唆しているように見受けられます.
```x
▶︎ 誤差が0.12あるだけでとんでもないエラー率になる。誤差関数が雑だから本当はもっとあるのかもしれないが、改善の余地がある。
▶︎ 問題は、どのような状態の時に学習が成功し、失敗するのかがまだ分かっていない。表現力は十分に持っているはずなのに、なぜか学習しない。
```
過学習に至ったときにうまくいってるように見えるだけでしょう.
```x
▶︎過学習ではないですね。データセットが小さいかつ、それ以外の範囲が出ないことが分かっているので。XORは2^2パターン全て学習できれば精度が100%になりますが、それは過学習とは呼ばないのと同じで、今回の初期のRNNに関しても文字数が圧倒的に少なく、パターンも決まっているので。
```
……と主張されておられる.
私が思うにそれは単純な写像を, ニューロンを使って回り道して作っている状態. LLMは局所的にはたしかに線形写像ですが,全体で見ても線型写像だとしたらそれは複雑な文章生成には到底耐えられないかと. (十分に大きいモデルをマクロに見ると非線形性があるので)
大規模言語モデル=LLMを目指すとして,
そもそもエンベディングテーブルとは数百億から下手すれば1兆語彙を, たった数千〜1万次元程度のベクトルで表現する, 凄まじく繊細なテーブルです.
それをGELUやSwiGLUのような綺麗な活性化関数を使わずに, しかも爆速でやると仰っている. さすがにそのレベルの革新性を主張するには根拠がない限り, 飛躍が過ぎると判断されるかと.
そのやり方で, 例えば1億語彙までスケールするとして2乗の1京回×数千次元をバックプロパゲーションなしで学習するというのは……さすがにきついかと.
バックプロパゲーションが要らないという主張については活性化関数がきわめて単純だから. それなら全層に渡しても「修正」できるでしょう.つまり自明に近いですね.
勾配消失なんて関係ない, という主張については, xorというゼロイチでしか見ないのであれば勾配消失も何もありません. 永遠に層を貫通するわけですから, 何層増やそうがほとんど意味が出てこない. つまりそれは実際には極めて浅い層だけで動いてると思われる.
「こんに」から「ち」「は」が次文予測できたとの報告ですが, まぁ……それが「大規模言語モデル=LLM」にそのままスケールできると言い切れるのはなぜでしょうか?
MNISTだけでなくGLUEあたりをパスしてからにした方がいいと考える次第です.
```x
▶︎ 私が批判されながら、誤差逆伝播に変わるアルゴリズムや精度を30%→100%まで持っていく頭のおかしい行動が取れる理由は、以下の思想があるから。
▶︎ 1. 私のNNは高次元の万能近似回路
▶︎ 3. 何十回と失敗した経験則から、原因と対策が殆どわかっている
```
殆どわかってる, との事ですが, なんで上手くいってるのか分かってないとも自分で明言なさっている. ↓↓↓
```x
▶︎ 学習が進まないの、謎。単体だと上手く動いてるはず?何が原因だろうか。
▶︎ 学習アルゴリズム開発者本人ですが、なぜ学習が進むのかは謎です。
```
既存手法があまたの失敗の上で最適だと言われてきてる経緯もよく知った方がよい.
それはごく初期にそういった様々な試行錯誤のうえで「やはりGELUやBPが現実的にいい性能が出せるし, コストも抑えてこれである」と様々な研究者が合意しているような状況.
そして, そもそもアカデミアは自分のアイディアも含めて新規手法を常に疑ってかかるのが基本姿勢.
ジャーナルに「不確実さ」を載せないためで, それが積み重なると自他問わず全ての研究が信用出来なくなってしまうため. だから懐疑的になる. 個人攻撃ではないのです.
出さないのも自由ですが, 前述の理由で信頼を得られない. これは言動に一切関わらず, その厳密性をフラットに評価してそう判断しているから. 感情ではなく, 論理として.
……と, ここまで色々と蛇足なアドバイスをさせていただいたものの, この投稿に対しても
```x
▶︎ 何もわかってない人が国産LLMのやつ批判してて吹いたww
```
といったツイートをなさるのでしょう. (過去に氏がそう仰っていたので)
先に答えておきますね.
「自分のやってることがご自分でお分かりにならないようなら, 私にわかるわけがないですし仰る通りです. ただ, 詳しい者として一般論は申し上げられます.」
まだ間に合いますので, 大学院あたりまで修了なさるのがおすすめです.
Twitterに何を投稿しようと自由です. でも自分で違和感を見て見ないふりするのだけはやめたほうがよろしい. 既存手法と同等に自分の手法を疑うこと, これは研究者としての基本姿勢です.
研究テーマ設定を見かけるとついつい, より良い筋でやっていけるようアドバイスしたくなってしまう性が染み付いてしまっているためでして.
もちろん, 関わりのない方ですので蛇足でしかないのですが, 多くの方に影響力をお持ちでありつつ研究の進め方については独自の姿勢を持つように見受けられまして.
それはもちろん根本的には自由でありつつ, 相談相手の需要がもしあればひとつの(一般的)意見をお渡しできるかなと思いキーボードを叩いた次第です.
どうか匿名でご勘弁を.
--------
【追記】
おそらく氏のやられていることは順伝播 (forward propagation) のみでの学習かと思いますが, この手法の先行研究は山のように存在します.
(Hebbian theory, Perceptron, Adaptive Linear Neuron:ADALIN, Widrow-Hoff learning rule...)
見つけられないとすれば, 古典的 (1960~1980年頃) ゆえに電子化されていないためです. 現行の商用LLMがそれらの情報を簡単に連想して引用できず, DR等で検索しても出てこないのはその為でしょう.
これらに簡単にアクセスするためにはやはり学術機関に所属して図書館を利用するのが圧倒的に楽です. マイクロフィルムや紙媒体でしか残っていないものもありますから.
また, 有料データベースであるJSTOR, IEEE Xplore, Springer Linkなどにもアクセスが出来ます.
なお, arXivはあくまでプレプリントですので, 論文として引用するには査読を通過したものをつよく推奨します. ジャーナルもものによっては不十分な査読で掲載されてしまいますので, トップカンファレンスのものを信頼できる足がかりの論理として扱うのが基本的な考え方となります.
また, 「分からなければ (大量に貼った) 論文を読んでください」という姿勢は, それぞれをどう引用し, どのように自分の主張と論理的に接続するかの説明がなされなければ根拠として見なされないのが一般的な考え方です.
ブログとしての掲載はもちろん自由ですが, それらを十分な説明として取り扱ってもらうには至らないでしょう.
論文を引用するからにはそういった丁寧な取り扱いをすることを期待されるものです. 「敬意がない」と他の方から指摘されるのはおそらくそれが理由でしょう.
これは, 過去の論文を引用しながら新たな主張を論文として営々と積み上げ続けてきたアカデミアの「過去への感謝」という慣習です.
人の行動は自由ですから「こうしろ」とは申し上げませんが, この暗黙の了解を保持する (≈研究機関に所属したことのある) 方からの理解を得るのはこのままですときわめて難しいであろう, とアドバイスさせてください.
こういった主張のやり方を自分なりに一から身につけるのはたいへん難しいので, どなたかそういった手法を学べる信頼できる方に師事することをおすすめしている次第です.