sumio (@sumio_tym) profile picture

Androidのテスト自動化に興味を持っているエンジニアです。 趣味は合唱。パートはトップテナーです。 「Androidテスト全書」執筆。DroidKaigi 2016-2020, 2022, 2024 スピーカー。

Machida-shi, Tokyo, Japan
Joined September 2011
Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)Photo by sumio (@sumio_tym)
「仕組みから理解する!Composeプレビューを様々なバリエーションでスクリーンショットテストしよう」の動画も公開されてました! ありがとうございます! #DroidKaigi youtu.be/c4AxUXTQgw4?feature…
2
19
1,873
Jetpack AppState, announced at #AndroidDevSummit today, brings the power of the Compose runtime completely outside the UI hierarchy: - Transform: Run headless compositions anywhere in your app - Statestore: Hoist app-level state with seamless DataStore sync out of the box
7
3
125
5,828
メジャーデビュー18周年! 振り返るとあっという間でしたが我々なりにしっかりと足跡を残せてきたような気もします🙏ファンのみんな、そして今もお世話になっているキューンソニーのスタッフさん、みんなのおかげで今があります!いつもありがとう!これからも頑張ります! #シド
66
442
14
2,877
34,150
今日はシドのメジャーデビュー18年記念日 たくさんのお祝いメッセージありがとう 当時事務所の社長と会うたびに「早くデビューさせてください!」ってお願いしてたのを思い出す 夏恋あたりからずっと言ってたような笑 結果「モノクロのキス×黒執事OP」という最高の形でデビューを飾らせていただきました シドを育ててくれたマーヴェリックに感謝! 所属レコード会社のキューンミュージックにも感謝!!
233
1,159
82
5,975
118,956
Softmaxとクロスエントロピーの標準的な実装に2種類の数値誤差が存在し、従来のGrokkingの研究で観測されていたSlingshot現象(突然の損失急増)が、この数値誤差によって説明できることが示された。さらに、蒸留で教師と生徒の出力が近い場合にも問題が発生しうることが明らかになった。 “A Fix for Softmax and Cross-Entropy” * Softmax Collapse 通常のクロスエントロピー損失では、正解クラスのLogitに対する勾配は gₜ = qₜ - 1 である。ここでqₜは、Softmaxが正解クラスに割り当てる確率である。 正解クラスに割り当てる確率が大きくなるにつれて勾配は小さくなるが、数学的にはゼロにはならない。しかし、浮動小数点演算ではqₜがちょうど1に丸められ、勾配がゼロになってしまう。 一方、不正解クラスに対する勾配は、より小さな値まで保持される。 本来、すべてのクラスに対するLogitの勾配の総和はゼロ、つまり ∑ₖ gₖ = 0 を満たす必要がある。これは、すべてのクラスのLogitに同じ値を加えてもSoftmaxが変わらないという性質に対応する。しかし、この数値誤差によって勾配の総和がゼロでなくなる。 正解クラスのLogitと、それ以外のLogitのLogSumExpとの差をマージンmと定義すると、FP32ではmが約16.6を超えた時点でこの問題が発生する。 例えば、Logitが [9, -9, -9] であり、最初のクラスが正解の場合、通常実装の勾配は、マージンが18と16.6を超えてしまうので0となり、 [0, 1.523 × 10⁻⁸, 1.523 × 10⁻⁸] となるが、正しい勾配は [-3.046 × 10⁻⁸, 1.523 × 10⁻⁸, 1.523 × 10⁻⁸] である。 この違いは絶対値としては小さいものの、Adamのように勾配の大きさを使って更新量を正規化するOptimizerでは、重大な影響を与えうる。 特にGrokkingでは、ネットワークが訓練データを記憶した後、かなり時間が経ってから汎化性能が急上昇する現象が知られている。その過程では、Lossがゼロ近傍から急激に増大し、再びゼロに戻るSlingshot現象も観測されていた。このSlingshot現象が次の過程で発生することを示している。 1. モデルが訓練データを記憶すると、正解Logitのマージンが増大する。 2. マージンがFP32の約16.6を超えると、正解クラスの勾配がゼロに丸められる。 3. 勾配が極めて小さくなると、Adamの二次モーメント推定値が減衰する。 4. Weight Decayなどによってマージンが再び16.6未満になると、正解クラスの勾配が復活する。 5. 小さくなった二次モーメントによって勾配が正規化されるため、非常に大きなパラメータ更新が発生し、Lossが急増する。 さらに、AdamWのεとWeight Decayが、学習後のLogitのマージンを決めることも分析している。 Weight Decayが働く定常状態では、マージンは近似的に m* ≈ log(1/ε) となる。例えばε = 10⁻⁸の場合、m* ≈ 18.4となり、FP32で数値誤差が発生する16.6を超えてしまう。これもSlingshotが発生する原因となる。 この問題の解決方法は非常に単純であり、クロスエントロピーの計算に必要な L = log(1 + e⁻ᵐ) を、数値的に安定したSoftplus関数 L = softplus(-m) で計算する。 さらに、正解Logitとその他のLogitとの差を使って損失を表現することで、自動微分によって正解クラスの勾配が、その他のクラスの勾配の負の総和として計算されるようにする。 これによって、非常に小さな勾配も保持され、勾配の総和がゼロになる性質も維持できる。 * Softmax Cancellation もう一つの問題は、LLMの蒸留やKL正則化などで発生しうる。 TeacherとStudentの、確率分布をp, q としたとき、Soft-target Cross-EntropyのStudent側のLogitに対する勾配は g = q - p となる。 このときTeacherとStudentが完全に一致すれば、勾配はゼロになるはずである。 しかし、従来の実装ではTeacherとStudentのSoftmaxを別々に計算してから引き算するため、近い値同士の減算による桁落ちが発生する。さらに、前向き計算と後ろ向き計算で演算経路が異なることによって、両者が完全に一致していてもゼロでない勾配が発生する場合がある。 これは、Teacherの重みをコピーしてStudentを初期化する場合などに問題となる。 実際に論文では、Teacherの重みからStudentを初期化して蒸留を続ける実験において、従来実装ではBF16の数値誤差がAdamによって増幅され、StudentがTeacherから乖離して精度が低下することを確認している。 この問題も計算方法の工夫によって解決できる。具体的には、TeacherとStudentの確率を別々に計算して引き算する代わりに、Logitの差から出発し、expm1やlog1pなどの数値的に安定した関数を用いて勾配を計算する。 これによって、TeacherとStudentが一致する場合には勾配が正確にゼロとなる。 コメント ==== 今回指摘された数値誤差の原因となる計算は、PyTorchやJAXを含む現在の標準実装にも残っている。今後、これらの標準実装でも対応が進むと思われるが、大規模LLMの学習で使われるFused Kernelなどについても、同様の問題が存在するかどうかの確認が必要である。 このような一見わずかな数値誤差が、学習性能や学習中の不可解な挙動に大きな影響を与える、数値計算の方法によって勾配が変わり、Optimizerを通じて学習全体の挙動が変化するのは今後注意が必要である。 将来的には、コーディングエージェントが、勾配の総和がゼロになるといった数学的に保たれるべき不変性を理解し、実装の中でそれらが破られる可能性のある箇所を自動的に検出・指摘できるようになることを期待する。
4
122
13
642
77,603
sumio retweeted
vulncheck.com/blog/php2shell… でGitHubに公開されているPoCを随時検証していて、x86-64はまだ誰もASLR突破できてないけどARM64ではPoC成立しているようです。世の中の放置されてるPHPサーバは大半がx86なので救われているのかも。
5
1
13
930
京王電鉄、Qilinの仕業と。ランサムを仕掛けられなかったので、脅迫に移行。
【影響続く】京王電鉄Gへのランサムウェア攻撃、ハッカー集団「Qilin」が声明 news.livedoor.com/article/de… 声明には内部資料とされる画像27枚が添付され、データ公開の期限とみられるカウントダウンもあるという。京王電鉄は声明を確認したとした上で「事実関係の確認を進めている」としている。
9
53
15,077
sumio retweeted
まぁクローズドリリースしてからもう1年以上やっているんですが、プレスリリースになりました。プロダクトのフェーズが変わってきたなってことを実感しています xitter.gq/DeNAPR/status/21105619…
大学受験の数学記述答案を、AIが30秒で採点・添削するアプリ「SIRUS(シルス)」の提供を開始! 答案を見てもらえる機会を、住む地域や通塾を問わずすべての受験生へ。 数学の記述答案は、自分の解答を客観的に評価してもらう機会が限られています。志望大学に合わせた対策や添削指導を十分に受けられる環境は、住む場所や家庭の経済状況に左右されやすく、「このままでいいのか」という不安を一人で抱えながら勉強を続ける受験生も少なくありません。 「SIRUS」は、そんな受験生の毎日の学習に伴走するアプリです。 ✅紙に解いた答案をスマホで撮るだけ ✅AIが途中式も読み取り、30秒以内に部分点まで採点 ✅「方針・論証・計算」の3観点でフィードバック ✅志望校から逆算した「あなたのための3問」を毎日出題
1
1
9
1,065
ソフトウェア開発の自動化の話でふとLyeeを思い出し、その後どうなっていたのかとGoogleのAIモードに聞いたら面白いことを言うが、それをChatGPTやClaudeに検証させると創作のハルシネーションがひどいと言うので、ChatGPTにさらに調べさせたところ、2025年に論文が出ていて、その会議の正体を調べさせ、初期の論調と発表者らのその後など調べさせたところ興味深いことがわかった。それら論文の内容はChatGPTで簡単に把握できる。かつてなら面倒だからやらなかっただけで、答えはとっくに出ていたのだね。まとまった批判がないから未来の世代からどう見えるのだろうと気になっていたが、英語文献がそれを果たしていて、LLMのおかげで誰でも把握できるようになっている。結果は載せないけど、みんな各自でやってみるといいよ。聞き方次第で答えが変わりそうだし、何度か掘らないと表面的な答えで終わることに注意だけど。
2
19
62
8,146
新しいサービスを2つリリースしました! 1つは最近トレンドになってきているAIエージェントによるテスト代行サービス、 もう1つは音声、動画、IoT、CAPTHAなどの自動化しづらいテストも自動テストに組み込める、実機テストセンターです! 詳細はこちら! prtimes.jp/main/html/rd/p/00…
8
29
1,628
macOSの端末でgit commitする際に、emacsclient -cを使い、アプリのEmacsで編集する場合、Tahoeから、C-x#したら端末にカーソルが戻らなくなった件が解決しました。.emacsに (add-hook 'server-done-hook (lambda () (do-applescript "tell application \"iTerm\" to activate"))) を入れます。
1
1
4
890
15年らしい Xに登録した日を覚えていますか? #MyXAnniversary
2
104
作曲家 佐藤眞は、9月21日、88歳にて逝去いたしました。生前賜りました皆様のご厚情に、心より御礼申し上げます。葬儀・告別式は近親者にて執り行いました。ご弔問、ご香典、ご供花等は辞退申し上げます。後日「お別れの会」を予定しており、詳細は決まり次第ご案内いたします。
39
1,294
290
3,220
445,755
最近のRoborazziのパフォーマンス改善📊 Activity起動前にConfigurationなどを変えるようにして改善した。 RobolectricではActivity作り直された時にgc()を呼んでてそこで結構遅くなる📝 Preview screenshots are 1.6x faster, and up to 3.7x with the new renderScale github.com/takahirom/roboraz…
1
18
1,275
去年の Kotlin fest で話されてた companion object なくてもはやせるやつきちゃ
📢 Kotlin 2.5.0-Beta1 is out! Here are some of the highlights: ✅ Language: Stable name-based destructuring in only-syntax mode and new experimental companion extensions and blocks ✅ Standard library: New experimental functions for simplifying common patterns with if expressions. ✅ Kotlin/JS: Support for the es2020 target ✅ Kotlin compiler: More consistent inline function behavior during .klib compilation Try it out: kotl.in/2-5-0-beta1
1
4
606
sumio retweeted
カナダの田舎町にも普及していたいやすとや おお、世界に冠たる我らがいらすとや
5
30
1,101
sumio retweeted
今日ちょっとバズった@typesafeaiのJevをつかった「意味による検索」の詳しい解説記事かきました。 例として、冒険者の掲示板から「危険のわりに報酬が安すぎる」ような依頼を検索したりできます。 #Jev Jevのキラーアプリ、「意味で探す grep」を作った|Junji Uehara zenn.dev/uehaj/articles/jev-… #zenn
4
28
1,957