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

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

[[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のランダムヒルクライミングアルゴリズムをマスターする

ブログ    
ブログ    

推薦する

ついに! SM2 国家暗号アルゴリズムが Linux カーネル コミュニティに承認されました

背景Guomi は国家商用暗号化の略称です。アルゴリズム標準は国家暗号管理局によって策定され、多数の...

...

...

5つの異なるタイプの人工知能

近年、人工知能は、データから洞察を引き出すことに関する企業の考え方を一変させました。ほとんどの人はこ...

完全なルーティングアルゴリズムの設計目標の分析

ルーティング アルゴリズムには通常、次の 1 つ以上の設計目標があります。最適化:最適化とは、メトリ...

Baidu World 2020 | Baidu CTO 王海鋒が Baidu Brain 6.0 をリリース、AI の新インフラストラクチャが業界インテリジェンスを加速

もし20年前の自分に会って会話ができたら、何を話しますか?想像する必要はありません。まるでSF映画の...

...

Microsoft の 38 TB の内部データが漏洩!秘密鍵と3万件以上の仕事上の会話が漏洩、その背後にある理由は衝撃的

何か大きなことが起こりました!数か月前、マイクロソフトの AI 研究チームは、大量のオープンソースの...

AI Punk が MNIST に敬意を表す: Python と開発ボードのみを使用して、決して繰り返されない時計を作成

はい、この時計があれば、MNIST 手書きデータセットなしでは生きていけません。私たちは古代の真空管...

この本は人気があり、この本を学んだ男性は給料が30万以上上がった

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

2022年の展望: 自動化におけるイノベーションと機会

テクノロジーへの関心と導入が多様化するにつれ、多くの企業が将来の進路を決める岐路に立たされています。...

なぜ AIoT が将来の主流となるのでしょうか?

エンジニアであれ消費者であれ、AIとIoT技術が私たちの生活にもたらした変化は誰もが感じています。ビ...

機械学習とディープラーニングとは何ですか?ファイザン・シャイクがお手伝いします

概要: この記事では、機械学習とディープラーニングの定義と応用についてわかりやすい言葉で紹介するとと...

人工知能の7つの応用シナリオ

人工知能とは、人間の行動や思考をシミュレートし、トレーニングを通じて特定の問題を解決できる機械によっ...

Java 上級: 負荷分散のための 5 つのアルゴリズムの詳細な理解

この記事はWeChatの公開アカウント「Android Development and Progra...