AIは人間の仕事を奪うのか?

2022年11月30日にOpenAI社がGPT-4搭載のモデルを公開して以降、ChatGPTがメディアなどでも耳目を集めている。このような一つの情報科学の技術が大きな注目を集めるのはDeepMind社が開発したAIであるAlphaGoが囲碁のプロ棋士であったイ・セドル氏を破って以来だろうか。

そこで、今回の記事では、「AIは人間の仕事を奪うのか?」、「教育におけるAIとの向き合い方」の2点について畑違いながらも情報科学に関わる身としての一見解を述べてみたいと思う。

注意: 以下の意見は私の所属する団体とは関係のない私個人の見解であること、私は自然言語処理の研究者ではなく、特にChatGPT等の大規模言語モデルについては、専門家の立場というよりは一利用者としての意見であることをご承知おきいただきたい。


TL;DR

まず私個人の立場を述べておくと、私はChatGPTを始めとするAIを用いたサービスの利用には肯定的な立場だ。私が受け持つ講義においても、大学が定める大規模言語モデルの利用ガイドラインに沿いつつ、学生にはChatGPTの利用を認めている。

そして、ChatGPTを始めとするAI技術が人間の仕事を「完全に」奪うか?と問われれば、少なくとも、今の新卒の大学生が定年を迎える40年後くらいまでは、AIと人間が共存しつつも、AIが人間の仕事を完全に奪うことはないとみている。

また、教育におけるAIとの付き合い方について言えば、AIが人間以上に賢くなることによって、人間が学ぶことに価値がなくなるか、ということにも私は否定的で、数年後には小学校の教育でもAIを用いた学習が普通になると考えている。

このように考える理由について、私の経験と実際にChatGPT Plusを1ヶ月間使ってみた感触を含めて考えて述べていきたいと思う。


現在の大規模言語モデルにできること

月並みな感想にはなるが、ChatGPT、特にGPT-4をモデルとして用いたものはかなり賢い。すでに多くのメディアで取り上げられているとおり、言語の翻訳や要約といったタスクの他、プログラミングや資料作成、ひいてはアイディア出しについても助言を与えてくれる。

そして、私が考えるChatGPTの優れている点を挙げるとすると、チャット、すなわち会話をしていくことで答えを洗練させていく能力に非常に優れているという点である。

例えば、私が講義で課している以下の課題について、ChatGPTがどのような答えを返してくるのか見てみたい (なお、以降のChatGPTへの問いは特別な断りがない限り英語でした質問を日本語に翻訳して掲載している)。

glPushMatrixならびにglPopMatrixを用いて簡単な時計のプログラムを作成せよ。この際、秒針、分針、時針はそれぞれ三角形や四角形で描画すればよい。時間の取得には「time.h」で提供されているlocaltime関数が使える。

上記の課題は、OpenGLとGLFW3を用いて、時計のプログラムを作るというものである。

この課題をChatGPTに通したところ、コンパイル可能なプログラムが出力されたのは、予想の範疇である。それらしいコードが出力されたが、実際に実行してみたところ、真っ黒な画面が表示された。そこで、私自身がそのコードを斜め読みし、まず間違いの1点目として、秒針、分針、時針のそれぞれに色をつけるコードが入っていないことに気がついた。

そこで、次にChatGPTに、以下のような質問を入力した。

上記のコードを実行したところ、黒い画面が表示されました。おそらく、針に色をつけるコードが足りていないと思うのですが、コードを修正してくれませんか?

すると、今度は確かに色をつけるコードを追加するための修正点について、回答を与えてきた。与えられた修正点を反映し、プログラムを実行したところ、再び黒い画面が表示された。

そこで、次は以下のような質問を入力してみた。

また黒い画面が表示されました。このコードを修正するのにどうすれば良いでしょうか?

この質問が先ほどの質問と大きく異なっている点は、人間のコードに対する解釈を全く入れていない、という点である。先ほどは「色がついていないようだから、色をつけてほしい」と人間の要望を伝えているが、今回はそのようなヒントが全くない。

上記の質問に対してChatGPTが返してきた修正を反映した最終的なコードが以下のものである。

#include <GLFW/glfw3.h>
#include <iostream>
#include <ctime>
#include <cmath>

// Function to draw a clock hand
void drawHand(float length, float width, float angle) {
    glPushMatrix();

    glRotatef(angle, 0.0f, 0.0f, 1.0f);
    glBegin(GL_QUADS);
    glVertex2f(-width, 0.0f);
    glVertex2f(width, 0.0f);
    glVertex2f(width, length);
    glVertex2f(-width, length);
    glEnd();

    glPopMatrix();
}

int main() {
    if (!glfwInit()) {
        std::cerr << "Failed to initialize GLFW!" << std::endl;
        return -1;
    }

    GLFWwindow *window = glfwCreateWindow(640, 480, "Clock", nullptr, nullptr);
    if (!window) {
        std::cerr << "Failed to create GLFW window!" << std::endl;
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window)) {
        int width, height;
        glfwGetFramebufferSize(window, &width, &height);
        float aspectRatio = static_cast<float>(width) / height;

        glViewport(0, 0, width, height);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(-aspectRatio, aspectRatio, -1.0f, 1.0f, 1.0f, -1.0f);
        glMatrixMode(GL_MODELVIEW);

        glClearColor(0.0f, 0.0f, 0.0f, 1.0f);  // Set the clear color to white
        glClear(GL_COLOR_BUFFER_BIT);
        time_t rawTime;
        struct tm *currentTime;
        time(&rawTime);
        currentTime = localtime(&rawTime);

        glLoadIdentity();

        // Draw clock hands
        float secondHandLength = 0.7f;
        float minuteHandLength = 0.6f;
        float hourHandLength = 0.4f;
        float handWidth = 0.02f;

        float secondAngle = 360.0f - (currentTime->tm_sec * 6.0f);
        float minuteAngle = 360.0f - (currentTime->tm_min * 6.0f + currentTime->tm_sec * 0.1f);
        float hourAngle = 360.0f - (currentTime->tm_hour * 30.0f + currentTime->tm_min * 0.5f);

        glColor4f(1.0f, 0.0f, 0.0f, 1.0f);  // Second hand color
        drawHand(secondHandLength, handWidth, secondAngle);

        glColor4f(0.0f, 1.0f, 0.0f, 1.0f);  // Minute hand color
        drawHand(minuteHandLength, handWidth, minuteAngle);

        glColor4f(0.0f, 0.0f, 1.0f, 1.0f);  // Hour hand color
        drawHand(hourHandLength, handWidth, hourAngle);

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

驚くべきことに、このコードを実行すると、正しく以下のような時計の画像が表示される (きちんと正しい時刻を表示し、なおかつアニメーションする)。

このように、現在のChatGPTは非常に賢く、上記の問いは一般的な情報科学科であれば少なくとも大学3年生以上の内容ではあると思うが、その内容に対してきちんと回答を作成できている点は非常に驚くべきことである。


AIは人間の仕事を奪うのか?

では、本題の「AIは人間の仕事を奪うのか?」について考えてみたい。

当然ながら、第一次産業に関わる人たちの仕事がロボットはともかくとして、ChatGPTに完全に奪われることは、私が生きているうちには起こらないと思う。

自動運転こそ現実味を帯びてきてはいるが、自動運転車が舗装されていない山道などを走れるようになるには、まだ10年以上はかかるはずだし、農業や林業などのより複雑なタスクを必要とするものに関して言えば、人間と同等の作業ができるようになるのはかなり先だろう。

ここでも、ロボット技術の進歩によって、人間の手間が減って、人手不足や食糧難などの問題が解決されることはあっても、人間が何もせずに、必要な全ての農耕産業を担えるようになるとは考えがたい。

実際、現在のメディア等の見解では、いわゆる士業のような専門的な知識を用いる仕事ほど打撃が大きいと言われており、その点には同意する。ただし、この場合も、いわゆる士業の仕事が完全に奪われることはないと見ている。

弁護士や医師などを例に取ってみると、彼らがChatGPT等のAIを用いて、調べ物をすることは一般的になるだろうと思うが、最終的にクラアントや患者との間でコミュニケーションを取って、一定のコンセンサスを得る、という作業から人間が不要となることはないだろう。

ただし、社会がこれらの職業従事者を必要とする人数は減少傾向にはなると思う。2023年現在の日本は医師不足だと言われているが、AIの発達により、医師の仕事が効率化されて、現在の医師数のまま医師不足が緩和される可能性は十分にあると思うし、これは他の士業についても同様だと思う。

プログラマはどうか?

では、先ほどのOpenGLのプログラムでChatGPTが十分な力を発揮したプログラミングならどうだろうか?

言うまでもなく、先ほどの課題は大学生向けの課題であり、職業としてプログラムを書いている人たちは、上記のコードよりも、圧倒的に長く、複雑なコードを書いている。その点で、すぐにAIにプログラマの仕事が奪われると考えるのは尚早だろう。

ただ、プログラムに対する向き合い方は大きく変わってくるように思う。例えば、ChatGPTはすでに作成された関数にdocstring等の説明をつけたり、テストコードを書いたりすることが可能だと言われており、このような手間はかかるが、あまり生産的とは言えない活動がChatGPT等のAIで置き換わる可能性は高いと思う。

また、コードスニペットのような短い関数を出力することはChatGPTの得意分野だろうが、これらを組み合わせて、必要な結果を得られるかどうかはプログラミングにおける「デザイン」の分野であり、この部分はまだ今のAIには難しいように感じる。

実際、上記のOpenGLのコードでも、関数の数はmain関数を入れて2つと十分なモジュール化ができておらず、このままコードを大規模化することは少し難しいと感じる。もちろん、ChatGPTに明確な指示を出してコードを書き直してもらうことは可能だが、そのためにはプログラミングに関する一定の理解が必要であることは言うまでもなく、人間がAIの出力したコードに介入・理解して組み合わせる必要はあるだろう。

ただし、今のプログラミングの分野ではローコードやノーコード (コーディングをしない、あるいはごく少量に限る)が、ある程度、普及してきており、プログラムを作成するために必ずしも「コードを書く」ことが必要ではなくなってきている。その意味でAIを利用することで、コードを書くことなく、その組み合わせによって、何らかの新しいプログラムを生み出すことはできるかもしれない。もちろん、ここでも、人間による要素の組み合わせ作業は必要になる。

翻訳家やライターなどはどうか?

私個人の経験で言えば、ChatGPT等の登場前からGrammarlyやDeepL等の優れたサービスによって、英語での論文執筆のハードルは格段に下がった。

私自身はDeepL等の機械翻訳のサービスに自分が書いた英語を入力し、その翻訳結果の日本語を確認しながら英文を修正し、最後にGrammarly等で文法チェックをする、といったスタイルで論文を書くことが多い。

最近はChatGPTが使えるようになったので、Grammarlyが分かりづらいと指摘してきた箇所について、ChatGPTに改善案を求めることができるようになり、英語論文執筆のハードルはさらに低くなった。

この点から言えば、一部の翻訳家の仕事はすでに奪われている、と言って良いのかもしれない。ただし、この場合も、完全に仕事がなくなるか?と問われれば、それは否であろう。

実際、上記の方法で英語論文を執筆できるとはいっても、やはりネイティブが書いた文章には表現力や語彙力の観点では劣る部分が多いと感じる。いわゆる英文校正のような簡易的なサービスの需要は減っていくと考えられるが、専門的な翻訳家の仕事はAIの利用によって軽減されることはあっても、完全に失われることはないだろう。

では、いわゆるニュース記事を作成するライターなどはどうだろうか?言うまでもなくAIは学習したことしか答えることができないので、最新のニュースに関する質問に答えることは不可能だ。少なくともニュース記事を作成するための取材記録のようなものがなければ、たとえどんなに賢いAIであっても記事を書くことはできないだろう。

また、物事の特徴ある部分を関連付けて、面白みのある文章を作る、という行為も「現在の」AIには少し難しいように感じる。例えば、昨年、東京ヤクルトスワローズで日本プロ野球の最多ホームラン記録を作った村上宗隆選手に関するニュース記事を(日本語で)作成したいとしよう。

ChatGPTに以下の要件で記事を作成してもらった。

あなたは新聞記者です。ヤクルトスワローズの村上宗隆選手がホームラン56本の日本プロ野球記録を作りました。これに関するニュース記事を作ってください。特に村上選手と前記録保持者の王貞治選手との記録達成までにかかった試合数や年齢、当時の時代背景等を比較しながら、今回の記録のすごさが読者に伝わるような記事にしてください。

この要件に合わせChatGPTが作成した記事が以下のようなものである。

タイトル:村上宗隆、王貞治の56本ホームラン記録を破る!達成までの道のりを振り返る

本日、ヤクルトスワローズの村上宗隆選手が、日本プロ野球史上最多となるシーズン56本目のホームランを放ち、記録更新を果たしました。かつての記録保持者である王貞治氏の偉業を破ることとなった村上選手の輝かしい快挙について、達成までの道のりや時代背景を比較しながら、そのすごさを読者に伝える記事をお届けします。

まずは、村上宗隆選手が新記録を達成するまでの経緯を振り返ります。今シーズン開幕当初から絶好調を維持していた村上選手は、破竹の勢いでホームランを量産。56本目のホームランを記録するまでに、わずか125試合を消化しました。これに対し、王貞治氏が1964年に56本のホームラン記録を樹立するまでに、140試合を要しており、村上選手の驚異的なスピードがうかがえます。

また、記録達成時の年齢も大きな違いがあります。村上選手はたった26歳で新記録を樹立しましたが、王貞治氏が記録を達成した当時は29歳でした。この3歳の差は、野球選手のキャリアにおいて決して軽視できないものであり、村上選手の将来の活躍が期待される一因となっています。

さらに、村上選手が記録を更新した現代の野球界と、王貞治氏が活躍した時代の違いも見逃せません。現在のプロ野球では、より高度なトレーニングや栄養学、分析技術が導入されており、投手陣もそれに見合った高いレベルでプレーしています。そんな厳しい状況下で、村上選手が記録更新に成功したことは、その才能と努力がいかに絶大であるかを物語っています。

確かに、日本語としてはとても自然であるが、これが読み応えのある文章か、と問われると、どこか物足りない印象を受けるだろう。おそらく、人間が書く記事であれば、監督や関係者からのコメントや王氏が記録を達成した当時のより深い状況描写、そこに写真なども加えて記事を作成するはずだ。

また、王氏の記録達成時と現在の環境の違いに関して言えば、確かに投手のレベルはアップしているかもしれないが、それに伴い道具も進化してホームランを打ちやすくなっているかもしれないし、日本からメジャーリーグに行くトップ選手が増えたということも、もしかするとホームランの打ちやすさに関係があるかもしれない。

これらを踏まえると、ChatGPTが日本語をやや苦手としていることを差し引いても、やや平凡な文章で、より面白みのある文章を書くには、やはり人間が取材して得た情報を追加して与える必要があるように思う。

ちなみに誤解のないように補足をしておくと、記録達成当時の村上選手の年齢は22歳で記録達成までの所要試合数は143試合、対する王氏の記録達成時の年齢は24歳で所要試合数は140試合、どちらもシーズン最終戦での記録達成という点で、ChatGPTの記事にはやや間違いがある (が、これは学習方法の進歩に従って改善していく部分だろう)。


教育におけるAIとの付き合い方

改めて私個人の見解を述べるなら、これからも人間の学ぶ意味は変わらないと思う。ただし、その学び方は変化してくるかもしれない。

これまでも、私たちは学校で分からない問題などにぶつかった際、教員に質問をする、図書館やインターネットで調べる等をして、宿題や課題に取り組んできたと思う。ただ、ここで大事になるのは、いざ何かを調べるには、自分にもそれなりに知識が必要であり、調べて得た知識を元に自分で考える必要があるということだ。まさに「学びて思わざれば即ちくらし」。これは相手が人間や本でもAIでも、太古から変わらない点だと思う。

小学生にフェルマーの最終定理は理解できるか?

極端な例として、小学生がフェルマーの最終定理について知りたいと思ったときに、その証明をChatGPTに聞いたとしよう。ChatGPTに以下のように尋ねてみる。

小学生にも分かるようにフェルマーの最終定理のシンプルな証明を教えてください。

ChatGPTからの回答を要約すると、

小学生には理解が難しい。二つの正方形の面積の和が別の正方形の面積の和と等しくなるというピタゴラスの定理と似たもので、それを立方体などに当てはめたときに、和を等しくすることができなくなる、という定理だ。

という趣旨の回答が返ってくる。では、高校生ならどうか?とChatGPTに問うと、

証明には谷村・志村・ヴェイユ予想における楕円曲線とガロア表現の関係性を理解する必要がある。アンドリュー・ワイルズ (フェルマーの最終定理を証明した数学者)は、フェルマーの最終定理が成立すると仮定すると、特定の数論的な性質を満たす楕円曲線が存在する、という条件を利用して証明した。

という趣旨の回答が返ってくる。小学生の時のものよりだいぶ複雑だ。これを理解しようとするなら、少なくとも楕円曲線とガロア表現について学ぶ必要があると分かる。

では最後に数学科の大学生で、すでに楕円曲線とガロア表現について知っていると仮定して、証明を与えてもらうとどうだろうか?

今度は、モジュラー形式やフライの楕円曲線などの、より専門的 (と思われる)内容を含んだ証明のガイドラインを出してくる。ここまで来ると、私にも理解が難しいが、いずれにしても証明のガイドラインであって、理解するには、それぞれの項目について、より深く知る必要がありそうだ。

上記は、フェルマーの最終定理という、大半の大人さえも理解できないものを扱っており、極端な例であることは認めるが、結局のところ、大規模言語モデルの答えも人間の教員の答えと同じで、示唆を与えることはできるが、自分自身が理解するには、自分で勉強するしかない。

勉強した上で、どこが分からないかを聞けばChatGPTがまた新たな答えを出してくるだろうが、それでも人間の勉強が不要になることがないのはお分かりだろう。

AIを使ったレポートの限界

では、勉強をする必要がなくならないとして、AIを使った作文やレポートを作ることはどう考えるべきだろうか?

例えば、とても有名な書籍であれば、ChatGPTに読書感想文を書かせることはできそうだ。私は文学にはあまり造詣がないので、例えば小学校一年生が桃太郎の読書感想文を書くとしよう。

あなたは日本の小学校1年生です。夏休みの宿題に「桃太郎」の読書感想文を日本語の400文字で書かなければなりません。先生をうならせる小学1年生らしい読書感想文を書いてください。

この要件に対して、ChatGPTが返してきた感想文が以下のようなものである。

夏休みに「桃太郎」を読みました。桃太郎は、桃から生まれた勇敢な男の子で、おじいさんとおばあさんと一緒に暮らしています。ある日、桃太郎は鬼ヶ島に住む鬼たちを退治することを決めます。おばあさんが作ってくれたおにぎりを持って、旅に出ます。

途中で、犬、猿、キジに出会い、おにぎりを分けてあげると、みんな桃太郎と一緒に鬼ヶ島へ行くことになります。みんなで力を合わせて、鬼たちを倒します。最後には、鬼たちも悪さをしないと約束するので、みんなでお祝いをして帰りました。

この話から、大切なことが学べました。まず、勇気を持って立ち向かうことが大事だと思います。桃太郎は怖くても、鬼を退治しに行く勇気がありました。そして、友達と協力することも大切です。みんなで力を合わせて、困難なことに立ち向かうことができました。

私も、桃太郎のように勇敢で、友達と力を合わせて困難なことに立ち向かいたいと思いました。これからも、「桃太郎」の話を大切にして、勇気と友情を大切にしたいです。夏休みの宿題で「桃太郎」を読めて、とてもうれしかったです。おしまい。

正直なところ、小学1年生にしては語彙が豊富すぎる気がするが、かなりよく書けていると感じるのではないだろうか?しかし、これはあくまで、桃太郎のような良く知られた内容の話を題材にした場合で、これがダメだというなら、Wikipediaで要約された内容見たり、映画になっている課題図書を選んで本の代わりに映画を見るのも同じだろう。結局、手段が進歩しても、ズルができてしまうのはある程度仕方がないように感じる。

ましてや、上記は桃太郎だから良いが、大学のレポートともなれば、そうはいかないだろう。結局のところChatGPTは文章を書く手間は省いてくれるかもしれないが、文章の内容については、自分自身が理解していなくてはならない。レポートに書くべき内容についての十分な情報を与えれば、ChatGPTは適切な文章を作成してはくれるかもしれないが、それはあくまで書くべき文章の内容が十分理解できていることが前提だ。

ただし、ChatGPTの文章にも優れている部分があると私は感じた。この文章を見てみると、前半部分に桃太郎の要約があり、後半部分に自分の感想がまとめられている。これは文章の構造としては読みやすく、小学生がお手本とするには最適な文章のように思える。将来的には、教育現場において、このような80点のお手本を作るのにAIが利用されることは十分にあるだろうと思う。

AI時代に何を学ぶべきか?

これは非常に難しい質問だと思う。自分自身に子供ができたとして、勉強はできるに超したことはないと思うが、何を生業にするべきかと問われると難しい。50年前なら、医者か弁護士とでも言っておけば良かったかもしれないが、今ならより職人的な仕事の方が、AIの参入が難しく、安泰であるようにも感じる。

では、職人になれば良い、というと話が終わってしまうので、いわゆる士業のような職業を目指すとすると、結局のところ、何を学ぶべきかは今と変わらないと思う。ただし、学び方のスタイルは大きく変化していくだろう。

今後、このような専門知識を活かすような分野では、AIとの協業は欠かせなくなってくる。AIはとても賢い同僚のようなものだ。賢い同僚と会話をするには、自分自身もある程度の知識がなくてはならない。その意味で、AIとの会話についていけるような専門知識を自分自身も身につけ、さらに次々と新しい情報を学習するAIに負けないよう、研鑽を続けていく必要がある、というのは今後も変わらないだろう。

ただ、AIが加速度的に賢くなっていくことに対応する意味でのリテラシー教育が今後、重要性を増していくことは想像に難くない。

先日、2023年5月3日付けの毎日新聞の記事に国立情報学研究所の新井紀子教授のChatGPTに対する見解が掲載されていた。

チャットGPT 民主主義に試練 国立情報学研究所社会共有知研究センター長・教授、新井紀子氏に聞く

新井教授は、以前「東ロボくん」という東大に合格できるようなAIを作成するプロジェクトのリーダーを務めていた人物である。新井教授の見解を要約すると以下のようなものだ。

AIの出力は正しいとは限らないので、それを見極められる知識を身につけることが大切。自分がよく知っていることならAIは役に立つが、そうでない場合の利用には危険を伴う。

最後に専門家の意見を引用するのは少々さもしい気がするが、この一言には、AIと向き合う上でのエッセンスが集約されているように思う。結局、AIや技術が進歩しても、それを使いこなせる人間になれば問題なく、そうでない場合には誤情報を発信するなどの危険が伴う。

AIが賢くなることは、現在、仕事が奪われる可能性が高いと言われている士業に従事する人たちには脅威かもしれないが、これらの職業には、もともと、物事を広く深く理解する力が不可欠だろう。その意味で、これらの職業に従事する人たちが努力を続ける限り、その仕事を完全に奪われることはないと思う。


結びとして

話は変わって、2017年、当時の佐藤天彦名人を将棋AIのPonanzaが破って以降、プロ棋士がAIを研究に導入したことで、将棋の戦法が飛躍的に進歩したと言われており、次々と新しい定跡 (より勝ちやすくなるような指し手)が発見されているそうだ。

このような、知識の飛躍的な進歩はChatGPTを始めとする大規模言語モデルや画像理解モデルの登場で、より一般的な職業領域においても発生する可能性が高い。これからを生きる我々は、常に新しい知識を取り入れながら、技術や社会の進歩について行かなければならないのかもしれない。

私自身も、英語論文の執筆のみならず、論文のサーベイや、ひいては新しい研究のアイディア出しにもAIの利用を始めている。AIと協業して、進歩の波に乗り遅れないよう、私自身もより精進しなければならないとの自戒を込めて、今回の記事を締めくくろうと思う。