データサイエンスと人工知能の専門家がプログラミングスキルを向上させる方法

データサイエンスと人工知能の専門家がプログラミングスキルを向上させる方法

[[379310]]

ビッグデータダイジェスト制作

出典: medium

編集者: Hippo

プログラミングは嫌いです!

これは私が7年前のインターンシップ中に同僚に言ったことです。まったくその通りです。私はバスに乗っている無表情な人たちのような、感情のないプログラムされた機械にはなりたくない。

現在、私はプログラミングの大学院学位を 2 つ取得しており、5 つの異なる企業で Web 開発者として働き、現在はコンピューター ビジョン エンジニアとして働いています。

プログラミングが大好きです!

これは、なぜ私がテクノロジーにそれほど興味を持っているのかと聞かれるすべての人に私が答えていることです。私がプログラミングを好きになったのは、コードで実装されたアプリケーションが、今日のテクノロジー主導の社会に真のチャンスをもたらすという認識からです。

この記事では、プログラミングスキルを養い、向上させる方法を紹介します。プログラミング スキルを向上させるために使用できる 5 つの戦略を紹介します。

アルゴリズム演習

アルゴリズムは、私を含め、多くの機械学習実践者を怖がらせることが多いです。機械学習分野の台頭により、ヒューリスティックアルゴリズムによるパターン検出という従来の方法は不要になり、特徴検出はニューラルネットワークに任されるようになりました。

それでも、アルゴリズムはソフトウェアとコンピューティングの世界、そして機械学習の世界では確実に重要な役割を果たします。アルゴリズムの練習はプログラミングスキルを向上させる最良の方法の 1 つです。

コードのメモリ効率を高めるためのインスピレーションを得られるという明らかな利点の他に、アルゴリズムを研究することのもう 1 つの利点は、問題を解決するための適切な考え方が養われることです。

選択したプログラミング言語で、さまざまなデータ構造とデータ変更方法を探索するアルゴリズムを実装します。データ オブジェクト、メソッド、その他の便利な関数を使用してプログラミングの効率を高める方法を学びます。

データ サイエンティストは、データ マイニングや Web クロールのアルゴリズムをよく使用します。アルゴリズムとデータ構造を十分に理解することで、実際に実行速度が速い効率的なコードを作成し、プロジェクトの納期をさらに短縮できます。

アルゴリズムによって複雑さのレベルは異なりますが、ここではアルゴリズムについて簡単に説明します。関連リンクはここにあります:

https://towardsdatascience.com/algorithms-for-data-scientists-insertion-sort-6caa69f906b3

個人的な経験:

モバイル コンピューター ビジョン エンジニアとして、私はポーズ推定、オブジェクト検出などの一般的なコンピューター ビジョン (CV) タスクに多くのディープラーニング モデルを使用しています。

PyTorch、TensorFlow、Keras などのプラットフォームはモデル実装の複雑さを軽減しますが、特定のユースケースにはカスタム アルゴリズムを実装する必要があることがわかりました。

たとえば、コサイン類似度に基づいてポーズ マッチング アルゴリズムを作成したり、機械学習モデルの出力であるデータ構造を効率的に走査したりします。

さまざまなアルゴリズムのリスクを十分に理解していることを確認するために、非常に優れた教科書「アルゴリズム入門(第 3 版)」を購入しました。ただし、この教科書は初心者にはあまり優しくないかもしれません。この場合、HackerRank などのプラットフォームが特に推奨されます。

技術書

本で勉強すると、まるで学校に戻ったような気分になります。生き生きとした言葉と詳細な内容の本ほど有益なものはありません。

キャリアの初期には、私は「忍者レベル」のプログラミングスキルを習得したので、最終的には YouTube チュートリアルを見たりプログラミングの本を買ったりしなくなるだろうと常に思っていました。

しかし、長年かけて、どんなレベルに到達したとしても、プログラミング言語について学ぶことは常にあることに気づきました。私は YouTube のプログラミング チュートリアルで学ぶのが大好きですが、古典的なプログラミング技術書に記載されている豊富で簡潔な知識に代わるものはありません。

たとえば、Python はデータ サイエンティストが習得しやすい標準的なプログラミング言語です。構文、データ構造、一般的な関数を数週間学習すると、カスタム Python スクリプトを簡単に実装して実行できるようになります。さらに一歩進んで、ビデオを通じて Python の中級スキルを習得することもできます。

ただし、Python ではプログラミング スキルを向上させるために探索できることがさらにたくさんあります。 Python 言語についてより詳しい情報を学んだ方法の 1 つは、技術書、具体的には Fluent Python を読むことでした。この本は初心者向けではなく、中級者以上のプログラマーがプログラミング能力を向上させることを目的としています。

要約すると、技術書は、プログラミング言語のシンプルで明確な紹介を提供することでデータ サイエンティストのプログラミング スキルを向上させることができます。また、プログラミング言語の詳細な説明を提供することで、データ サイエンティストの既存のプログラミング スキルを向上させることができます。

他の開発者のコ​​ードを読む

[[379311]]

最近、ディープラーニング畳み込みニューラルネットワークInception Networkを実装してみました。

私はすでに Python と TensorFlow ライブラリを使用したアプローチをとっていましたが、他の機械学習実践者がどのようにそれを行っているのか興味がありました。

私はいくつかの GitHub リポジトリを調べ、他の開発者のコ​​ードを研究し、間違いなく、既存のソリューションを改善し、既存のプログラミング スキルをより適切に適用する方法を学びました。

勉強や学習に利用できる公開 GitHub リポジトリが多数あります。 Google や Facebook のようなテクノロジー企業で働いていなくても、その開発者から学ぶことができます。エンジニアが開発したプロジェクトの公開リポジトリを閲覧するだけです。データ サイエンティストにとって、これは最近リリースされた Detectron2 やその他のオープン ソースの機械学習ツールなどのコード リポジトリを調査することを意味する場合があります。

職場の社内開発チーム内でコードレビューを実施することも適切な学習方法です。他の開発者の実装方法の背後にある理由や考え方を理解することで、間接的に自分の視野やプログラミングの知識を広げることができます。

さまざまなプログラミング言語を学ぶ

プログラミング言語の多様性を追求することが、プログラミング スキルを向上させる唯一の方法です。プログラマーはコードを使用して問題を解決しますが、複数のプログラミング言語の知識があれば、問題解決に利用できるツールが広がります。

Python を習得すると、データ サイエンスの中核となる実用的なアプリケーションを学習できるようになります。しかし、専門的かつ実用的な環境では、ソフトウェア開発にはさまざまなプラットフォームが含まれ、それぞれに機能にアクセスして実装するための特定の言語があります。

プロの機械学習実践者は、次のようなアプローチでさまざまなプログラミング言語を適用する場合があります。

  • JavaScript でインターネットからデータを取得する
  • SQLの変更とデータベースのクエリ
  • アルゴリズムと機械学習モデルのPython実装
  • 統合機械学習モデルを備えたモバイルデバイスアプリケーションの Swift/Kotlin/Java 開発
  • その他のツールと方法

1 つのプログラミング言語に習熟すると、新しい言語を習得するのがはるかに簡単になります。オブジェクト指向プログラミング、関数型プログラミングなどの一般的なソフトウェア開発パラダイムを理解していれば、物事をスムーズに進めやすくなります。さまざまなプログラミング言語に適用できるソフトウェア開発パラダイムに関する知識。

ソフトウェア開発の原則に従う

シンプルさを重視し、繰り返しを避け、読みやすさを向上させます。

これらは私が長年プログラミングをしてきた中で蓄積してきた経験です。これらは単純に聞こえますが、ほとんどの開発者はこれに従わず、私自身も時々これらの原則を忘れてしまいます。

[[379312]]

そのため、ソフトウェア エンジニアリング業界では、開発者が簡潔で効果的なソフトウェアを開発できるように、いくつかのガイドラインが繰り返し提唱され、施行されています。いくつかはリストアップされています。

(1)KISS原則

Keep It Simple Stupid (KISS) は、ソフトウェアを開発する際のシンプルさの概念を重視します。問題の解決策は複雑である必要はありません。ソフトウェア開発の設計および実装フェーズでシンプルさを採用することで、コードの理解と保守が容易になります。

 確かに、技術者は自慢したがりますが、読みやすさのためにシンプルにしておきましょう。

——アメリカのテレビシリーズ「You Are Not MR.Robot」

(2)SOLID原則

Solid 原則は、オブジェクト指向開発者が再利用可能、拡張可能、保守可能、かつ効率的なプログラムを構築できるように設計された一連の原則で構成されています。 SOLID で取り上げられている原則の使用と実践について詳しくは、Katerina Trajchevska によるこのビデオをご覧ください。

関連リンク: https://www.youtube.com/watch?v=rtmFCcjEgEw&ab_channel=LaraconEU

  • 単一責任の原則
  • オープン・クローズ原則
  • リスコフの置換原理
  • インターフェース分離の原則
  • 依存性逆転の原則

(3)DRY原則

同じことを繰り返さないでください。プログラムを作成するときに、既存の機能を実行するコードを作成すると、開発時間が無駄になります。重複を避けるには、プロジェクト フォルダー内のユーティリティ ファイルを活用するのがよいでしょう。ユーティリティ ファイルには、ソース コードで頻繁に実行される一般的なタスクが含まれています。

特別賞

(1)個人プロジェクト

個人プロジェクトに取り組むことで、多くの機械学習実践者が新しい分野、ライブラリ、プラットフォーム、フレームワーク、プログラミング言語に触れることができます。

プログラミング スキルを向上させるために個人プロジェクトに取り組む主な利点は、ソフトウェア製品を開発するときにさまざまな問題に遭遇することです。プログラミングで問題を解決するたびに、全体的なスキル レベルが向上します。

(2)経験の共有

自分が使い慣れた言語でプログラミングする方法を他の人に教えることは、プログラミング スキルを向上させ、専門知識を示す実証済みの方法です。 YouTube 動画、オンライン コース、または私のお気に入りの Medium のブログ投稿など、さまざまな方法で自分の経験を共有できます。

結論は

プログラミングスキルの向上は終わりのない旅です。プログラミングはいつでも学習したり、上達したりできます。

学習プロセスを楽しむようにしてください。

状況が本当に難しい場合があり、StackOverflow ではすべての質問に答えられないことがありますが、スキルを磨くために費やすあらゆる努力が、最終的にスキルを習得するために必要であることを忘れないでください。

関連レポート:

https://towardsdatascience.com/how-to-improve-programming-skills-for-data-scientists-and-machine-learning-practitioners-d865d8aadab1

[この記事は51CTOコラムBig Data Digest、WeChatパブリックアカウント「Big Data Digest(id: BigDataDigest)」のオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  機械学習とディープラーニングの違いを簡単に分析する

>>:  5分でPythonのランダムヒルクライミングアルゴリズムをマスターする

ブログ    
ブログ    

推薦する

大きな論争の中、ニューヨーク警察はロボット犬をボストン・ダイナミクスに返却した

ニューヨーク市警察は、その「ユートピア的」技術に対する激しい批判を受け、米国企業ボストン・ダイナミク...

...

PyTorch の 4 分間のチュートリアルで線形回帰の実行方法を学びます

[[271978]]ビッグデータダイジェスト制作編纂者:洪英飛、寧静PyTorch は、ディープラー...

100日学習プラン | データサイエンスの詳細ガイド

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

クールなデュオ: AI が金融テクノロジーの進化にどのように役立つかを示す 6 つのケース スタディ

中国では、口座間の送金、銀行ローンの申請、取引の実行にインターネットを利用することが住民にとって日常...

...

生成AI技術の原理を深く理解する: 生成AIの入門

人工知能を単純に目的別に分類すると、意思決定型AIと生成型AIの2つに分けられます。いわゆる意思決定...

OpenAI の新しい論文が GAN を破り SOTA に到達!この圧倒的な拡散モデルは単なる仕掛けなのか、それとも本物なのか?

最近またFaceAPPが人気になってきているので、編集者もダウンロードして試してみました。大丈夫です...

なぜロボット起業のチャンスはBサイドにあると言われるのでしょうか?

技術の変化のスピードは常に保守派の想像を超えています。 [[348702]]多くの人々の直感では、過...

初の科学ニュース執筆ロボット「小科」が発売

[[272541]] 8月1日、初の科学ニュース執筆ロボット「小科」が正式に就任し、その最初の一連の...

これらの6つのヒントを活用してAIガバナンスの問題を解決しましょう

AI ガバナンスは、データ プライバシー、アルゴリズムのバイアス、コンプライアンス、倫理など、企業内...

AIと建物の運用: 人、データ、信頼の基盤の構築

最近では、人工知能とそのサブセットである機械学習が注目のキーワードになっています。ディープフェイク、...