AIによるコード自動生成を使うプログラマーは、安全性の低いコードを書きやすいという研究結果 58
ストーリー by nagazou
要カイゼン 部門より
要カイゼン 部門より
スタンフォード大学の研究によれば、GitHub Copilotや「Facebook InCoder」などのAIプログラミング機能に依存しているプログラマーは、AIを使わないプログラマーよりも不正確でバグの多いコードを生成しやすいという結果になったそうだ(論文、GIGAZINE)。
検証は五つの課題をクリアする形でおこなわれた。与えられた共通鍵を使用して、与えられた文字列の1つは暗号化し、もう1つは復号化する2つの関数をPythonで記述するという最初の課題では、AIのサポートを受けなかったグループの79%が正しいコードを生成した一方で、AIのサポートを受けたグループは67%しか正しいコードを生成できなかったとしている。ほかの2つ目から4つ目の課題でもAIプログラミング機能を使うと脆弱性のあるコードを生成しやすいという結果となったとのこと。
検証は五つの課題をクリアする形でおこなわれた。与えられた共通鍵を使用して、与えられた文字列の1つは暗号化し、もう1つは復号化する2つの関数をPythonで記述するという最初の課題では、AIのサポートを受けなかったグループの79%が正しいコードを生成した一方で、AIのサポートを受けたグループは67%しか正しいコードを生成できなかったとしている。ほかの2つ目から4つ目の課題でもAIプログラミング機能を使うと脆弱性のあるコードを生成しやすいという結果となったとのこと。
時間の問題な気がする (スコア:3, 興味深い)
AIの絵も手の指がおかしかったけど最近は改善されてるし
どんな学習した状態のAIか知らんけどいずれコードも改善すんじゃね?
数年後にはAIなしで実装してたの?マジで?って時代が来るかも
Re: (スコア:0)
学習元がサンプルコードとかでセキュリティ面の品質が良くないんでしょうね。
現実でも正常系は良くても、例外やら境界値みたいな部分がボロボロなコード書く人居るし。
そもそも、仕様が未定義なパターンすら有るので、QAで決めてもらったり、言質取るとか有るよね?
加えて、AIが作ったコードの設計意図を読み込んで=リバースエンジニアリングして、
実装に考慮漏れが無いかを考えないといけないという二度手間が有るのがネック。
一種のペアプロと思えばアリかもしれない。
AIが対となるテストも同時に実装してくれるなら抜けが可視化されやすいのだろうけど。
Re: (スコア:0)
コードの質の話じゃなくて
AI絵なら指の数がおかしかった時に修正せず上げてしまう奴多いなって話でしょう
それっぽいからヨシッ!じゃ通らない世界
人間は見落としなくコードを読むことと正しいテストケースを作ることがスキルになるかな
Re: (スコア:0)
それこそ学習するのでしょう
Re: (スコア:0)
無駄。
OCR分野だと、誤判定はゼロに出来ないが人間のオペレータにチェックさせても概ね合ってると誤判定でも惰性で見逃すから意味がなく、結局全部目視入力させて結果を突き合わせる羽目になるらしい。
精度が高い程見逃しが増えるんだよ。
最後にオペレータ頼みになるなら最初からオペレータが積極関与する構造にしないと人間は惰性により機能しなくなる。
候補の提示程度で最終判断を常にオペレータに強いれば上手く行かないかと思ってたが、
今回のストーリーの件を見るに駄目っぽいかもな。
Re: (スコア:0)
むしろUnitTestから先にAIが浸透していくものかと思ってたよ
Re: (スコア:0)
INとOUTを要求仕様から明確にしてテストコード作れるってそれこそ最後の到達点な感じ
Re: (スコア:0)
INとOUTを要求仕様から明確にするのって最初の出発点ではないのか...
Re:時間の問題な気がする (スコア:1)
INとOUTから要求仕様を明確にするのが最初の出発点になるのだった。
Re: (スコア:0)
それをAIにやってほしいですね。
Re: (スコア:0)
人間の手の指の本数なら5本で固定。
5本以外は全て失敗と見なして良い。
しかしセキュリティや異常系の処理では、一般的な正解というものはない。
手の指と同じ様な丸暗記的な「学習」では成否の判断は不可能。結局はどれ
だけ優れたAIが示すコードといえど、それはあくまでサンプルに過ぎず、
異常系の処理を組み込むことはまず不可能だろう。
もしそれができるくらいにAIが進歩したならば、顧客折衝や要件定義の段階から、
全部AIがやってくれるようになってるだろうさ。
Re:時間の問題な気がする (スコア:2)
絵の例では多指症というのもあります。
https://ja.wikipedia.org/wiki/%E5%A4%9A%E6%8C%87%E7%97%87 [wikipedia.org]
セキュリティーが低いコードを書く必要がある場合もあるかもしれません。
そういうことまで含めて判断できるAIが実現するときは,人間がいらなくなるときだと思います。
Re: (スコア:0)
今回で言えば暗号・複合化の結果が正常一致し、例外が発生しない事。別に不可能ではない。
設計上の正確な条件が無ければ人間でも無理。
Re: (スコア:0)
お前は何を言ってるんだ。
「暗号化して復号化した結果が正しかったから正常と判断」なんて、
まさに糞プログラマーそのものだろうが。
Re: (スコア:0)
> 「暗号化して復号化した結果が正しかったから正常と判断」なんて、
> まさに糞プログラマーそのものだろうが。
RSAでの偽素数の排除って、まさにこのやり方をしているが。
Re: (スコア:0)
画像合成の方は人間が画像一枚づつにタグをふってる状態でAI自体はあまり進化してないように見えます。必要なのは教師の自動化でしょう。パターンを抽出してはまりそうなところにはめる処理ではかっちりした動作の必要なものにはうまくいかないと思います。
Re: (スコア:0)
翻訳だって一昔前は同じ議論があったよね。
でも今は、プロの仕事でも機械翻訳を人間が直すスタイルが多い。
文字起こしもベースは自動化させて、人間が手直しするスタイルが主流に。
プログラミングもいずれ同じことになるでしょうね。
その時は、AIの教師となる元のコードを作れる人、AIのコードをチェックして直せる人が必要になる。
コピペで作業するだけの仕事は無くなって、専門的な教育やスキルが必要な時代になれば、エンジニアとしてはいい時代になりそう。
Re: (スコア:0)
最近、使い物にならない機械翻訳支援ツールを実装した開発者と意味の通らない、真逆の意味になっている破壊的な記事の乱造を防ぐユーザーの熱いバトル [wikipedia.org]を見た
Re: (スコア:0)
一番熱いのがこれ: https://www.mediawiki.org/wiki/Topic:X5np6qyldklnm166 [mediawiki.org]
Re: (スコア:0)
>でも今は、プロの仕事でも機械翻訳を人間が直すスタイルが多い。
ダウト。
機械翻訳を手直しするのは、最初から翻訳するのと比べても大差ない
くらいの手間がかかる。機械翻訳はしばしば意味が正反対になってたり、
重要条件が全削除されてたりしている。結局は一文ずつ対応を確認していく
ことになり、単なる二度手間になってる。
機械翻訳にかけた奴をチョットテナオシして提出していいのは、訳文の
意味が正反対の文章を読んでも笑ってすませられるような、低品質文書でも
構わない案件だけだよ。
Re: (スコア:0)
プロの仕事って、そのプロの定義が違うんじゃないか?
プロの翻訳家じゃなくて、プロのダメダメとかさあ。
Re: (スコア:0)
> 機械翻訳を手直しするのは、最初から翻訳するのと比べても大差ない
わかる。既存の半端なプログラム渡されてこれベースで作業してくれって言われるのと同じですね。
添削 (スコア:2, 参考になる)
×復号化
○復号
Re: (スコア:0)
結構気になるやつ
Re: (スコア:0)
×復号化
○復号
きっとAIサジェストでタレコミ&編集されたのですよ
他人の書いたコードを本当に詳細まで把握してるか? (スコア:2, すばらしい洞察)
AIが生成するコードスニペットについて、1から10まで内容を把握して使ってるか?って話よ
大抵の人は生成されたコードをざっくりみて「たぶんおっけー」でそのまま放置
結果として境界条件や条件抜けでエラーを起こしたり、セキュリティリスクが高くなる
こういうのを避けるには、確実に動くコードスニペットだけを集めて使うべきなんだけど、AIの学習元ソースを全部精査してられる訳がないのでおかしなコードは必ず生成される
となると、次は生成されるコードを自動的に静的コード分析して、安全性を確保する仕組みを実装する事になる
Re: (スコア:0)
人間が作ったコードもアレなので、AIなしだろうと、自動的な静的解析は必須よね。
Re: (スコア:0)
静的解析も大概アレなのよね
事実上一定の信頼を措かざるを得ないけど
Re: (スコア:0)
やらないよりはマシってやつよ。
Re: (スコア:0)
あまり良くない例で例えてみると。
「100m先のゴールにたどり着け」てなお題に対して
人間がランニングシャツで軽快に走るコードを書くと
「石が落ちていて転ぶ可能性」やら「競争相手が画鋲を撒くかもしれない」
はたまた「狙撃されたらどうする」やら指摘してきて
フルアーマー着込んで隕石落ちようが這ってゴールしないと満足してくれない。
AI静的解析でそのへん忖度できても今度はその妥当性を保証せんといかんし。
Re: (スコア:0)
自動運転もそうだけど たぶんおっけー 位になってくれないと手間が増えるだけで便利じゃないじゃん
Re:他人の書いたコードを本当に詳細まで把握してるか? (スコア:1)
感覚的には認識率悪目のOCRかなぁ。
中途半端に正解だと間違い探しが大変なアレ。
Re: (スコア:0)
自動運転がやってくれるから、ヨシッ!
Re: (スコア:0)
AIは関係なくて、全て自分1人で作った方が安全性が高いというだけだよね。
人間でも複数人で分業して作るとどうしても安全性は低くなりがち。
Re: (スコア:0)
そうじゃなくて、内容を吟味せずにコピペする奴はやべーって話。
AIをディスる仮説立案のためのテンプレ文? (スコア:1)
「AIによる〇〇自動生成を使う〇〇は、〇〇性の低い〇〇を〇〇やすい、という研究結果」。
検証対象かも知れない仮説の例:
・字幕、翻訳者、再現、字幕、納品し
・フィナンシャルプラン、FP、実現、資金計画、提案し
・路線価予測、不動産屋、収益、不動産、掴まされ
…
Re: (スコア:0)
最初の例は、再現性より、感情移入性の方がよかた。
つまり (スコア:1)
スラドはAIを利用して記事を生成しているということか
Re:つまり (スコア:1)
ChatGPTを使えばわかるけど、AIのほうが比較にならないほどまともな文章です。
ただ、まともな文章でめちゃくちゃ嘘言うことあるのが怖い。
Re:つまり (スコア:1)
古代ローマの哲学者ググレカスについても詳しいChatGPTさんをディスるのか?
AI関連のニュースみるときは (スコア:1)
いつも頭に"現時点では"と暗黙的につけて読む
ものすごいスピードでできるようになるのを何度も見てきたから
Re: (スコア:0)
そのうち人間の書くコードは低品質と叩かれるようになり人間の関与ができなくなるであろう
動的型言語と静的型言語 (スコア:0)
とでは、事情がかなり違ってくるだろうね。
AIの難易度は、動的言語の方が圧倒的に難しそう。
コード補完機能のときにも見たような話 (スコア:0)
いつ頃見た話かは忘れた。
10%程度の差など誤差 (スコア:0)
被験者が全体で47人と少なすぎて、10%程度の差など誤差だと思う。
Table2の個別の結果を見ると、SecureかどうかよりIncorrect多いなというのが印象。
一部のテストではAI使ってるほうがIncorrect減ってて、最低ランクの底上げにはなるのかもしれない。
あとは議論に影響するか分からんないけど、被験者の9割近くが25歳未満で、プログラミング経験5年未満が6割以上。
また、被験者のプログラミング経験を十分に平準化できてるようにも見えない。
現場猫的な? (スコア:0)
AIが出力してるから、とりあえずヨシ!って心理状態なのかな?
レビュー人数が増えると、バグが見逃されやすくなる的な現象と似てる?
Re: (スコア:0)
ググって出て来たページに書いてあったからヨシ、が近いのかも?
サンプルとして使う分にはいいんですけど、それを考えずに使っちゃう人が少なくないのでしょうね。
AIによる自動生成とは贅沢なもんじゃのう (スコア:0)
昔はぐぐって怪しい個人ブログからコピペしていたもんじゃ
Re: (スコア:0)
「関係はあるのだろうか?」と疑問に思う時点でノータリンだよね
Re: (スコア:0)
容赦ない火の玉ストレートやめたげてw