|
データホエール Datawhaleのヒント 編集:Visual Learning for Beginners、出典:Zhihu 質問の出典: https://www.zhihu.com/questio... 01 著者:Ru Xue 業界外の人は、開発者はレンガを運ぶ建設作業員、アルゴリズム開発者は他人にやり方を指示する建築家のようなものだと想像するかもしれません。しかし、この認識は完全に誤りです。今日のインターネット企業では、アルゴリズム開発者と開発開発者の役割は、組立ライン上の異なるポジションに位置するだけで、本質的には機械の歯車のようなものです。さらに、多くのアルゴリズム開発者の作業負荷は、開発者の作業負荷に匹敵するほどになりつつあり、「パッケージ交換」だけではもはや十分ではありません。 まず、開発とアルゴリズムの役割における責任の違いについてお話ししましょう。典型的なレコメンデーション/広告システムを例に挙げると、データベース -> リコール -> 大まかなランキング -> 細かいランキング -> 混合ランキング -> フロントエンドといった上流モジュールと下流モジュールが存在します。
スキル面では、アルゴリズムエンジニアはアルゴリズム分野における多くの知識を理解する必要がありますが、求められるエンジニアリングスキルは徐々に開発職に匹敵するものになってきています。
最後に、この2つのポジションの面接状況についてお話しします。一般的に、アルゴリズム関連のポジションは若干のバブル状態にあり、競争も激しい一方、開発関連のポジションにはより多くの求人があります。
将来の開発においては、個人の努力だけでは時代の潮流に追いつくことはできません。優れたビジネスチャンスと優れたリーダーは、ビジネスの成長を容易に促進し、個人の飛躍的な成長につながります。これは開発職種にも当てはまります。特定の開発職種やアルゴリズム職種を選ぶよりも、優れたプラットフォームと優れたチームを選ぶことが重要です。 上記の比較は、主にインターネット企業におけるレコメンデーション/広告アルゴリズム関連職と開発関連職に焦点を当てています。CVやNLPなど、より研究志向のアルゴリズム関連職もありますが、ここでは詳細は割愛します。 02 著者: AI Snail Car 私の個人的な要約や、他の開発者との会話など、さまざまな側面があります。 1. 給与と福利厚生 数年前には、アルゴリズム関連の職種の方が開発関連の職種よりも高い給与が支払われていたかもしれません。 近年は徐々にレベルが平等になってきましたが、同レベルではアルゴリズム開発が開発を上回っている企業もまだ多くあります。 さらに、Alibaba Star、Meituan Beidou、Kuaistar、Tencent Big Shot など、多くのタレントプログラムを参照することもできます。 大半はアルゴリズム関連の分野に配属され、中にはいわゆる「開発」分野に配属された人もいました。しかし、個人的には、それらはR&Dと呼ぶべきだと思います。なぜなら、これらの分野は分散ストレージなど、高度な並列処理やスケジューリングアルゴリズムを多く扱うからです。しかし、こうした分野は学生時代にはなかなか参入しにくい分野です(企業では現状、人材が不足しています)。 2. 職種 アルゴリズム関連の職種は、論文を読んだり、モデルを構築したり、論文を書いたりするなど、純粋に研究ベースの職種になることもあり、大学での学術研究に似た分野です。 この種の作業は開発作業とは大きく異なる可能性があります。 しかし、アルゴリズム「エンジニア」について話している場合、アルゴリズム エンジニアの理解は、実際にはアルゴリズム エンジニアリングを使用して問題を解決することだけです。 一般的に言えば、開発とは開発ロジックを使用して問題を解決することです。 本質的には、彼らは皆、問題解決を行うエンジニアです。ただし、アルゴリズムにはより多くのステップとより深い思考が必要になる場合があり、開発にも同じことが当てはまります。 次の回答をご覧ください: https://www.zhihu.com/questio... 3. テクノロジースタック 個人的にはこの違いは重要だと感じています。 開発部門では、技術スタックは比較的幅広く、例えばバックエンド開発に長けていれば、多くのコア部門のポジションに応募できます。 しかし、アルゴリズムに関しては、焦点はかなり専門的です。例えば、良い内定を得たいのであれば、研究分野と仕事内容が合致していることが最大の前提条件です。合致していれば物事ははるかに容易になりますが、実際には非常に稀です。例えば、時空間シーケンスは気象学や交通など、様々な背景があり、細部にも違いがあります。同様に、ビデオ録画にも多くのサブフィールドがあり、レコメンデーションアルゴリズムはテキスト、ビデオストリーミングなどに分かれています。そのため、面接全体の範囲は(開発と比較して)比較的限られている可能性があります。 4. 職務要件 間違いなく開発は進んでいるが、アルゴリズムははるかに少なくなり、バブルはとっくに沈静化している。 それは理解できます。例えばアプリを作る場合、ソフトウェアであればまず開発システムを構築する必要がありますが、そのためには多くの開発者が必要です。一方、アルゴリズムは後からついてくるものかもしれません。 5. 難しさ アルゴリズムは間違いなくより困難です。 あなたの周りにいる優秀な人材のほとんどはAI分野にいます。アルゴリズム関連の職に就く人は、一般的に周囲の人々から比較的優秀だとみなされています。もちろん、開発分野にも優秀な人材はたくさんいますが、ここでは「比較的」としか言えません。 さらに、清華大学や北京大学など、様々な業界から数学、経済・経営学、物理学を専攻した高学歴の人材が多数この分野に参入しています。彼らは正式なコンピュータサイエンスの教育を受けていないかもしれませんが、中には並外れた学習能力を持つ人もいます。さらに、AIの学習は、コンピュータの基礎知識を広範囲に必要とする開発とは異なり、ゼロから始める必要があります。英語と数学さえ堪能であれば、あとは個人の学習能力と理解力次第です。そのため、不利になるどころか、むしろ優秀な人材が多く、求人が過剰になっている状況です。 03 著者: アンバースキー 私の職種はアルゴリズムエンジニアですが、実際の仕事はアルゴリズムと開発がそれぞれ50%ずつです。友人とアルゴリズムや開発とは何かについて話し合うこともよくあります。 経験が 1 年未満の新人アルゴリズム開発者としての私の観点からすると、アルゴリズムの役割は数学的な関係を扱い、開発の役割は論理的な関係を扱います。 開発者の責任は、製品のロジックを最下層から最上層まで構築することです。これには、フロントエンドページ間のナビゲーションロジック、バックエンドとデータベース間のインタラクションロジック、フロントエンドとバックエンド間のインタラクションロジックが含まれます。例えば、製品がビデオプラットフォームである場合、開発者はインターフェースを開く、ビデオをクリックして再生ページに入る、アカウントを登録する、情報を変更するといったタスクを担当します。 アルゴリズム エンジニアの職務は、その名の通り、アルゴリズムを中心に展開します。アルゴリズムには、機械学習、データマイニング、NLP、コンピューター ビジョン、レコメンデーション システムなど、さまざまな形式があります。多くの場合、アルゴリズム エンジニアは製品の中核を担い、非常に具体的な側面を担当したり、主要な機能のサポートを提供したりします。動画プラットフォームのシナリオに戻ると、レコメンデーション ページが更新されるたびに新しい動画が表示されます。更新のたびにユーザーにどの動画を推奨するかを決定するのが、レコメンデーション アルゴリズムの仕事です。アルゴリズムは多くの反復処理を経て、多くのアルゴリズム エンジニアが最適化に頭を悩ませています。さらなる特徴量エンジニアリングが必要か? パラメータをさらに調整する必要があるか? より適切なモデルが必要か? などなど。これらの操作は主に数学的なものであり、データセットの分布、関連性マトリックス、モデルの損失関数などの考慮事項が含まれます。 もちろん、研究の方向性は他にもたくさんあり、私が挙げた例はほんの一部にすぎません。 まだ卒業したばかりなので、視野が狭い部分があります。もし不正確な点がありましたら、専門家の方々に優しくご指摘いただければ幸いです。 04 著者: kuadoh 現状では、収入面ではアルゴリズム系と開発系の職種に基本的に差はありません。(2017年頃、ディープラーニングが爆発的に成長したこともあり、当初はアルゴリズム系の職種の方が初任給が高かった時期もありました。) 以下では、アルゴリズムに重点を置いた役割の観点から私の理解を共有します。アルゴリズムの役割は、主に直接プログラミングでは解決できない問題(主に画像、音声、テキスト認識などの非構造化入力)に対処します。この種の入力を処理するためのif-elseルールを手動で記述すると、プログラムが煩雑で長くなり、すべてのケースをカバーできなくなる可能性があります。解決策としては、問題を数学的な問題に変換し、モデル化し、ラベル付きデータを用いて数学的な問題を解くことが挙げられます。そして、得られた数学モデル(関数y=f(x)は典型的には確率関数)を使用します。 開発チームは構造化された入力処理を担当し、処理すべきシナリオは比較的固定されています。顔認識インターフェースを例にとると、開発チームの責任範囲には、認識対象の画像を圧縮し、ネットワーク経由でサーバーに送信して解凍し、画像入力アルゴリズムモジュールによって得られた結果をネットワーク経由でクライアントに送信することが含まれます。短時間で大量の顔画像入力をサーバークラッシュなく処理し、クライアントに遅延が発生しないようにすることは、バックエンド開発者が解決しなければならない一般的な課題です。 他の回答者も述べているように、開発業務は肉体的に負担が大きいことが多く、アルゴリズム業務は精神的に疲弊します。開発業務は一般的に比較的明確な問題(入力をいかに速く処理しながら精度を維持するか)を扱うため、開発者はコード分析とデバッグを通じて問題を特定し、確かなコンピュータサイエンスの基礎知識やより多くのマシンを活用することで解決することができます。例えば、数十ペタバイトのデータがあり、上位100件を見つける必要があるもののメモリが不足している場合、ヒープソートで処理できます。あるいは、リソースに余裕があれば、多数のマシンを用いた分散処理によって迅速に問題を解決することも可能です。 05 著者:Guan Jianchun(Arvin) まず、アルゴリズム関連の職種から見ていきましょう。アルゴリズムには通常、アルゴリズム設計とアルゴリズム実装という2つの役割が関わってきます。現在では多くのチームでこの2つの役割を兼任し、アルゴリズム設計者と実装担当者がそれぞれ後者を担当しています。しかし、アルゴリズム設計者が実装プロセスを担当せず、両者を分離しているチームもあります。業務の複雑さという点では、アルゴリズムエンジニアは比較的仕事量が多いものの、キャリアパスも非常に長いと言えます。 多くのアルゴリズム エンジニアは、最終的には企業で主任科学者や最高技術責任者などの役職に昇進するため、アルゴリズム エンジニアのキャリアの見通しは非常に有望であると言えます。 開発職についてお話ししましょう。実際、ソフトウェアチームにおけるほとんどのポジションは、フロントエンド開発、バックエンド開発、モバイル開発など、開発職です。ほとんどのプログラマーは開発業務を行っていると言っても過言ではありません。アルゴリズム開発職とは異なり、開発職は人数が多く、従業員に占める割合も高くなります。さらに、ほとんどの開発職のキャリアサイクルは比較的短く、開発者は通常、一定の年齢(例:35歳)に達すると他の職種に移行します。 プロジェクトマネージャーなどの管理職に就く人もいれば、建築家や業界コンサルタントになる人もいます。もちろん、開発者の中にはアルゴリズムエンジニアになる人もいます。 アルゴリズムエンジニアと開発者、どちらの方が将来性があるのでしょうか?実は、技術力があれば、どちらの職種も将来の可能性は無限大です。 優秀なプログラマーになるには、次の 2 つのことを適切に行うことが重要です。1 つ目は、職務に集中することです。2 つ目は、技術開発のトレンドに遅れずについていき、仕事の昇進と自己学習を通じて知識構造を継続的に向上させ、職場での競争力を高めることです。 * |
アルゴリズムエンジニアと開発者の違いは何ですか?
関連するおすすめ記事
-
2025 AI ウィンターキャンプ: 実践的な AI 学習が始まります!
-
PLMにおける大きな進歩!上海交通大学と上海AIラボの最新の成果がNeurIPS 24に選出されました。ProSSTはタンパク質構造情報を効果的に統合します。
-
2024 OSCARオープンソース業界会議が北京で開催されました。
-
雷軍、200万元のスポーツカーを53万元で販売!インテリジェントドライビングの徹底追求、わずか10分で6,900件以上の受注を獲得。
-
ロボットは人間を簡単に模倣し、さまざまなタスクやインテリジェントエージェントに汎用化できます。マイクロソフトの新たな研究によると、ロボットは人間とロボットの間で統一された動作表現を学習していることがわかりました。
-
KCC@ShenyangとopenKylinが共同でオープンソース愛好家サロンイベントを開催します。皆様のご参加をお待ちしております!