ビッグデータダイジェスト制作 出典: 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 を読むことでした。この本は初心者向けではなく、中級者以上のプログラマーがプログラミング能力を向上させることを目的としています。 要約すると、技術書は、プログラミング言語のシンプルで明確な紹介を提供することでデータ サイエンティストのプログラミング スキルを向上させることができます。また、プログラミング言語の詳細な説明を提供することで、データ サイエンティストの既存のプログラミング スキルを向上させることができます。 他の開発者のコードを読む 最近、ディープラーニング畳み込みニューラルネットワークInception Networkを実装してみました。 私はすでに Python と TensorFlow ライブラリを使用したアプローチをとっていましたが、他の機械学習実践者がどのようにそれを行っているのか興味がありました。 私はいくつかの GitHub リポジトリを調べ、他の開発者のコードを研究し、間違いなく、既存のソリューションを改善し、既存のプログラミング スキルをより適切に適用する方法を学びました。 勉強や学習に利用できる公開 GitHub リポジトリが多数あります。 Google や Facebook のようなテクノロジー企業で働いていなくても、その開発者から学ぶことができます。エンジニアが開発したプロジェクトの公開リポジトリを閲覧するだけです。データ サイエンティストにとって、これは最近リリースされた Detectron2 やその他のオープン ソースの機械学習ツールなどのコード リポジトリを調査することを意味する場合があります。 職場の社内開発チーム内でコードレビューを実施することも適切な学習方法です。他の開発者の実装方法の背後にある理由や考え方を理解することで、間接的に自分の視野やプログラミングの知識を広げることができます。 さまざまなプログラミング言語を学ぶ プログラミング言語の多様性を追求することが、プログラミング スキルを向上させる唯一の方法です。プログラマーはコードを使用して問題を解決しますが、複数のプログラミング言語の知識があれば、問題解決に利用できるツールが広がります。 Python を習得すると、データ サイエンスの中核となる実用的なアプリケーションを学習できるようになります。しかし、専門的かつ実用的な環境では、ソフトウェア開発にはさまざまなプラットフォームが含まれ、それぞれに機能にアクセスして実装するための特定の言語があります。 プロの機械学習実践者は、次のようなアプローチでさまざまなプログラミング言語を適用する場合があります。
1 つのプログラミング言語に習熟すると、新しい言語を習得するのがはるかに簡単になります。オブジェクト指向プログラミング、関数型プログラミングなどの一般的なソフトウェア開発パラダイムを理解していれば、物事をスムーズに進めやすくなります。さまざまなプログラミング言語に適用できるソフトウェア開発パラダイムに関する知識。 ソフトウェア開発の原則に従う シンプルさを重視し、繰り返しを避け、読みやすさを向上させます。 これらは私が長年プログラミングをしてきた中で蓄積してきた経験です。これらは単純に聞こえますが、ほとんどの開発者はこれに従わず、私自身も時々これらの原則を忘れてしまいます。
そのため、ソフトウェア エンジニアリング業界では、開発者が簡潔で効果的なソフトウェアを開発できるように、いくつかのガイドラインが繰り返し提唱され、施行されています。いくつかはリストアップされています。 (1)KISS原則 Keep It Simple Stupid (KISS) は、ソフトウェアを開発する際のシンプルさの概念を重視します。問題の解決策は複雑である必要はありません。ソフトウェア開発の設計および実装フェーズでシンプルさを採用することで、コードの理解と保守が容易になります。
(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のランダムヒルクライミングアルゴリズムをマスターする
中国科学院は「バグ発見」に着手し、一気に N 個の解決策をまとめました。魔法の武器は大きなモデルです...
Language I/O のプロダクト担当副社長である Chris Jacob が、進化する AI ...
わずか5年で、人工知能は急速に発展しました。最近、GPT-3が再び白熱した議論を巻き起こしています。...
人工知能は今世紀の主要な話題の一つです。 AI の能力と無限の可能性は、多くの興味深い会話や議論を生...
病院が導入する医療機器やモバイルデバイスが増えるにつれて、医療システムの IT インフラストラクチャ...
自分が非常に興味を持っている職種に応募していると想像してください。企業から、あなたの履歴書は人工知能...
[[349809]]序文今回レビューする内容は、データ構造トピックの「ツリー」です。ツリーなどのデー...
21 世紀に革命をもたらした技術が一つあるとすれば、それは人工知能です。 Googleの新社長サンダ...
[[328804]] 【ガイド】AI時代では、データ、情報、アルゴリズム、統計、確率、データマイニ...
人工知能はヘルスケアに変革をもたらす力となることが期待されています。では、医師と患者は AI 駆動型...
私は Unix オペレーティング システムに関する知識を頻繁に学んでおり、Unix オペレーティング...
5月19日北京時間午後11時、マイクロソフトの年次「Build Developer Conferen...