パスワードを忘れた? アカウント作成
16397663 story
バグ

AIによるコード自動生成を使うプログラマーは、安全性の低いコードを書きやすいという研究結果 58

ストーリー by nagazou
要カイゼン 部門より
スタンフォード大学の研究によれば、GitHub Copilotや「Facebook InCoder」などのAIプログラミング機能に依存しているプログラマーは、AIを使わないプログラマーよりも不正確でバグの多いコードを生成しやすいという結果になったそうだ(論文GIGAZINE)。

検証は五つの課題をクリアする形でおこなわれた。与えられた共通鍵を使用して、与えられた文字列の1つは暗号化し、もう1つは復号化する2つの関数をPythonで記述するという最初の課題では、AIのサポートを受けなかったグループの79%が正しいコードを生成した一方で、AIのサポートを受けたグループは67%しか正しいコードを生成できなかったとしている。ほかの2つ目から4つ目の課題でもAIプログラミング機能を使うと脆弱性のあるコードを生成しやすいという結果となったとのこと。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by KIRIU (2037) on 2022年12月29日 17時02分 (#4388159)

    AIの絵も手の指がおかしかったけど最近は改善されてるし
    どんな学習した状態のAIか知らんけどいずれコードも改善すんじゃね?

    数年後にはAIなしで実装してたの?マジで?って時代が来るかも

    • by Anonymous Coward

      学習元がサンプルコードとかでセキュリティ面の品質が良くないんでしょうね。
      現実でも正常系は良くても、例外やら境界値みたいな部分がボロボロなコード書く人居るし。
      そもそも、仕様が未定義なパターンすら有るので、QAで決めてもらったり、言質取るとか有るよね?

      加えて、AIが作ったコードの設計意図を読み込んで=リバースエンジニアリングして、
      実装に考慮漏れが無いかを考えないといけないという二度手間が有るのがネック。
      一種のペアプロと思えばアリかもしれない。

      AIが対となるテストも同時に実装してくれるなら抜けが可視化されやすいのだろうけど。

    • by Anonymous Coward

      コードの質の話じゃなくて
      AI絵なら指の数がおかしかった時に修正せず上げてしまう奴多いなって話でしょう

      それっぽいからヨシッ!じゃ通らない世界
      人間は見落としなくコードを読むことと正しいテストケースを作ることがスキルになるかな

      • by Anonymous Coward

        それこそ学習するのでしょう

        • by Anonymous Coward

          無駄。
          OCR分野だと、誤判定はゼロに出来ないが人間のオペレータにチェックさせても概ね合ってると誤判定でも惰性で見逃すから意味がなく、結局全部目視入力させて結果を突き合わせる羽目になるらしい。

          精度が高い程見逃しが増えるんだよ。
          最後にオペレータ頼みになるなら最初からオペレータが積極関与する構造にしないと人間は惰性により機能しなくなる。
          候補の提示程度で最終判断を常にオペレータに強いれば上手く行かないかと思ってたが、
          今回のストーリーの件を見るに駄目っぽいかもな。

      • by Anonymous Coward

        むしろUnitTestから先にAIが浸透していくものかと思ってたよ

        • by Anonymous Coward

          INとOUTを要求仕様から明確にしてテストコード作れるってそれこそ最後の到達点な感じ

    • by Anonymous Coward

      人間の手の指の本数なら5本で固定。
      5本以外は全て失敗と見なして良い。

      しかしセキュリティや異常系の処理では、一般的な正解というものはない。
      手の指と同じ様な丸暗記的な「学習」では成否の判断は不可能。結局はどれ
      だけ優れたAIが示すコードといえど、それはあくまでサンプルに過ぎず、
      異常系の処理を組み込むことはまず不可能だろう。

      もしそれができるくらいにAIが進歩したならば、顧客折衝や要件定義の段階から、
      全部AIがやってくれるようになってるだろうさ。

      • by vax730 (32985) on 2022年12月30日 11時00分 (#4388420)

        絵の例では多指症というのもあります。
        https://ja.wikipedia.org/wiki/%E5%A4%9A%E6%8C%87%E7%97%87 [wikipedia.org]
        セキュリティーが低いコードを書く必要がある場合もあるかもしれません。
        そういうことまで含めて判断できるAIが実現するときは,人間がいらなくなるときだと思います。

        親コメント
      • by Anonymous Coward

        今回で言えば暗号・複合化の結果が正常一致し、例外が発生しない事。別に不可能ではない。
        設計上の正確な条件が無ければ人間でも無理。

        • by Anonymous Coward

          お前は何を言ってるんだ。

          「暗号化して復号化した結果が正しかったから正常と判断」なんて、
          まさに糞プログラマーそのものだろうが。

          • by Anonymous Coward

            > 「暗号化して復号化した結果が正しかったから正常と判断」なんて、
            > まさに糞プログラマーそのものだろうが。

            RSAでの偽素数の排除って、まさにこのやり方をしているが。

    • by Anonymous Coward

      画像合成の方は人間が画像一枚づつにタグをふってる状態でAI自体はあまり進化してないように見えます。必要なのは教師の自動化でしょう。パターンを抽出してはまりそうなところにはめる処理ではかっちりした動作の必要なものにはうまくいかないと思います。

    • by Anonymous Coward

      翻訳だって一昔前は同じ議論があったよね。
      でも今は、プロの仕事でも機械翻訳を人間が直すスタイルが多い。
      文字起こしもベースは自動化させて、人間が手直しするスタイルが主流に。

      プログラミングもいずれ同じことになるでしょうね。
      その時は、AIの教師となる元のコードを作れる人、AIのコードをチェックして直せる人が必要になる。
      コピペで作業するだけの仕事は無くなって、専門的な教育やスキルが必要な時代になれば、エンジニアとしてはいい時代になりそう。

  • 添削 (スコア:2, 参考になる)

    by Anonymous Coward on 2022年12月29日 17時23分 (#4388172)

    ×復号化
    ○復号

    • by Anonymous Coward

      結構気になるやつ

    • by Anonymous Coward

      ×復号化
      ○復号

      きっとAIサジェストでタレコミ&編集されたのですよ

  • by Anonymous Coward on 2022年12月29日 17時52分 (#4388188)

    AIが生成するコードスニペットについて、1から10まで内容を把握して使ってるか?って話よ
    大抵の人は生成されたコードをざっくりみて「たぶんおっけー」でそのまま放置
    結果として境界条件や条件抜けでエラーを起こしたり、セキュリティリスクが高くなる

    こういうのを避けるには、確実に動くコードスニペットだけを集めて使うべきなんだけど、AIの学習元ソースを全部精査してられる訳がないのでおかしなコードは必ず生成される
    となると、次は生成されるコードを自動的に静的コード分析して、安全性を確保する仕組みを実装する事になる

    • by Anonymous Coward

      人間が作ったコードもアレなので、AIなしだろうと、自動的な静的解析は必須よね。

      • by Anonymous Coward

        静的解析も大概アレなのよね
        事実上一定の信頼を措かざるを得ないけど

        • by Anonymous Coward

          やらないよりはマシってやつよ。

        • by Anonymous Coward

          あまり良くない例で例えてみると。
          「100m先のゴールにたどり着け」てなお題に対して
          人間がランニングシャツで軽快に走るコードを書くと
          「石が落ちていて転ぶ可能性」やら「競争相手が画鋲を撒くかもしれない」
          はたまた「狙撃されたらどうする」やら指摘してきて
          フルアーマー着込んで隕石落ちようが這ってゴールしないと満足してくれない。
          AI静的解析でそのへん忖度できても今度はその妥当性を保証せんといかんし。

    • by Anonymous Coward

      自動運転もそうだけど たぶんおっけー 位になってくれないと手間が増えるだけで便利じゃないじゃん

    • by Anonymous Coward

      AIは関係なくて、全て自分1人で作った方が安全性が高いというだけだよね。
      人間でも複数人で分業して作るとどうしても安全性は低くなりがち。

      • by Anonymous Coward

        そうじゃなくて、内容を吟味せずにコピペする奴はやべーって話。

  • by Anonymous Coward on 2022年12月29日 17時40分 (#4388182)

    「AIによる〇〇自動生成を使う〇〇は、〇〇性の低い〇〇を〇〇やすい、という研究結果」。

    検証対象かも知れない仮説の例:
    ・字幕、翻訳者、再現、字幕、納品し
    ・フィナンシャルプラン、FP、実現、資金計画、提案し
    ・路線価予測、不動産屋、収益、不動産、掴まされ

    • by Anonymous Coward

      最初の例は、再現性より、感情移入性の方がよかた。

  • by Anonymous Coward on 2022年12月29日 17時40分 (#4388183)

    スラドはAIを利用して記事を生成しているということか

    • by Anonymous Coward on 2022年12月29日 18時15分 (#4388197)

      ChatGPTを使えばわかるけど、AIのほうが比較にならないほどまともな文章です。
      ただ、まともな文章でめちゃくちゃ嘘言うことあるのが怖い。

      親コメント
  • by Anonymous Coward on 2022年12月29日 19時14分 (#4388230)

    いつも頭に"現時点では"と暗黙的につけて読む
    ものすごいスピードでできるようになるのを何度も見てきたから

    • by Anonymous Coward

      そのうち人間の書くコードは低品質と叩かれるようになり人間の関与ができなくなるであろう

  • by Anonymous Coward on 2022年12月29日 17時32分 (#4388178)

    とでは、事情がかなり違ってくるだろうね。
    AIの難易度は、動的言語の方が圧倒的に難しそう。

  • by Anonymous Coward on 2022年12月29日 18時38分 (#4388213)

    いつ頃見た話かは忘れた。

  • by Anonymous Coward on 2022年12月29日 19時09分 (#4388225)

    被験者が全体で47人と少なすぎて、10%程度の差など誤差だと思う。
    Table2の個別の結果を見ると、SecureかどうかよりIncorrect多いなというのが印象。
    一部のテストではAI使ってるほうがIncorrect減ってて、最低ランクの底上げにはなるのかもしれない。

    あとは議論に影響するか分からんないけど、被験者の9割近くが25歳未満で、プログラミング経験5年未満が6割以上。
    また、被験者のプログラミング経験を十分に平準化できてるようにも見えない。

  • by Anonymous Coward on 2022年12月29日 23時00分 (#4388326)

    AIが出力してるから、とりあえずヨシ!って心理状態なのかな?
    レビュー人数が増えると、バグが見逃されやすくなる的な現象と似てる?

    • by Anonymous Coward

      ググって出て来たページに書いてあったからヨシ、が近いのかも?
      サンプルとして使う分にはいいんですけど、それを考えずに使っちゃう人が少なくないのでしょうね。

  • by Anonymous Coward on 2022年12月30日 19時44分 (#4388521)

    昔はぐぐって怪しい個人ブログからコピペしていたもんじゃ

typodupeerror

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

読み込み中...