ไลบรารีการเรียนรู้ของเครื่อง 3 อันดับแรกใน C ++ ที่คุณควรลงมือทำ

เผยแพร่แล้ว: 2020-12-10

ทุกวันนี้ ทุกที่ที่เรามอง แมชชีนเลิ ร์นนิง อยู่รอบตัวเราในรูปแบบใดรูปแบบหนึ่ง ปัญญาประดิษฐ์ชุดย่อยนี้พบการใช้งานที่หลากหลายในทุกอุตสาหกรรมที่คล้ายคลึงกันและถูกต้อง แม้ว่าแมชชีนเลิร์นนิงจะเป็นสาขาที่เกิดขึ้นใหม่ แต่ก็เปิดโอกาสให้สำรวจได้มากมาย

ตอนนี้ คำถามคือ ภาษาโปรแกรมใดที่จะใช้สำหรับโปรเจ็กต์แมชชีนเลิร์นนิง

Python และ C++ เป็นสองภาษาโปรแกรมยอดนิยม ภาษาทั้งสองนี้มีชุมชนที่กระตือรือร้น การสนับสนุนเครื่องมือเฉพาะ ระบบนิเวศที่กว้างขวางของไลบรารี และประสิทธิภาพรันไทม์ที่น่ายกย่อง อย่างไรก็ตาม จุดเน้นของโพสต์วันนี้จะเป็นแมชชีนเลิร์นนิงใน C++

สารบัญ

ทำไมต้องใช้ C++ สำหรับแมชชีนเลิร์นนิง?

เป็นที่ทราบกันดีอยู่แล้วว่าแมชชีนเลิร์นนิงต้องการประสิทธิภาพของ CPU ที่ใช้งานหนัก และนี่คือสิ่งที่ C++ รับประกันได้อย่างแม่นยำ เมื่อพูดถึงความเร็วและประสิทธิภาพ C++ จะทิ้ง Python, Java และแม้แต่ C# ไว้เบื้องหลัง ข้อดีที่สำคัญอีกประการของการใช้ C++ สำหรับ Machine Learning คือมีการรองรับพอยน์เตอร์ ซึ่งเป็นคุณสมบัติที่ไม่มีในภาษาโปรแกรมยอดนิยมหลายๆ ภาษา

เพื่อให้การนำ Machine Learning ไปใช้ใน C++ ได้สำเร็จ สิ่งสำคัญที่สุดที่ต้องทำคือทำความคุ้นเคยกับไลบรารี C++ โชคดีที่ C++ มีไลบรารีที่ยอดเยี่ยมสำหรับ Machine Learning รวมถึง Shark, MLPack และ GRT (Gesture Recognition Toolkit)

ตอนนี้ มาดูการอภิปรายของไลบรารี Machine Learning ใน C++ กัน

ไลบรารีการเรียนรู้ของเครื่องใน C++

1. ฉลาม

Shark เป็นโอเพ่นซอร์สไลบรารีแบบแยกส่วนใน C ++ เป็นไลบรารีที่สมบูรณ์แบบสำหรับ Machine Learning เนื่องจากมีการสนับสนุนอย่างกว้างขวางสำหรับอัลกอริธึมการเรียนรู้ภายใต้การดูแล เช่น การถดถอยเชิงเส้น ค่าเฉลี่ย k โครงข่ายประสาทเทียม และการจัดกลุ่ม เป็นต้น

Shark ยังมีวิธีการมากมายสำหรับการเพิ่มประสิทธิภาพเชิงเส้นและไม่เชิงเส้น อัลกอริธึมการเรียนรู้แบบเคอร์เนล การเพิ่มประสิทธิภาพเชิงตัวเลข และโฮสต์ของเทคนิค ML อื่นๆ เป็นเครื่องมือที่เหมาะสำหรับการวิจัยและการสร้างแอปพลิเคชันในโลกแห่งความเป็นจริง Shark มีเอกสารประกอบที่ยอดเยี่ยมและเข้ากันได้กับ Linux, Windows และ macOS

วิธีการติดตั้ง Shark?

ในการติดตั้ง Shark คุณต้องรับแพ็คเกจต้นทางจาก หน้าดาวน์โหลดอย่างเป็น ทางการ หลังจากนี้ คุณต้องสร้างไลบรารีโดยเขียนโค้ดต่อไปนี้:

mkdir ฉลาม/สร้าง/

cd Shark/build

cmake ../

ทำ

คุณต้องรู้ว่า Shark มีการพึ่งพาสองอย่าง Boost และ CMake ในขณะที่ใช้ Windows โฆษณา Linux โดยปกติใช้ ATLAS บน macOS การเร่งคือไลบรารีพีชคณิตเชิงเส้นเริ่มต้น ใน macOS คุณสามารถใช้ MacPorts เพื่อรับแพ็คเกจที่จำเป็น เช่น:

sudo port ติดตั้ง boost cmake

อย่างไรก็ตาม ภายใต้ Ubuntu คุณต้องติดตั้งแพ็คเกจที่จำเป็นโดยใช้คำสั่งต่อไปนี้:

sudo apt-get ติดตั้ง cmake cmake-curses-gui libatlas-base-dev libboost-all-dev

นี่คือขั้นตอนในการติดตั้ง Shark:

  • ขั้นแรก ดาวน์โหลดแพ็คเกจต้นทางจากหน้า d ownloads แล้วคลาย แพ็ก
  • เปิดตัว CMake GUI
  • เลือก "ซอร์สโค้ดอยู่ที่ไหน" เพื่อกำหนดเส้นทางไปยังตำแหน่ง Shark ที่ไม่ได้บรรจุ
  • เลือก “ตำแหน่งที่จะสร้างไดเร็กทอรี” เพื่อกำหนดเส้นทางที่คุณต้องการจัดเก็บไฟล์โครงการ Visual Studio
  • เลือกตัวเลือก "เพิ่มรายการ" ตอนนี้ เพิ่มรายการ BOOST_ROOT ประเภท PATH และตั้งค่าเป็นไดเร็กทอรีการติดตั้งบูสต์ของคุณ
  • อีกครั้ง เพิ่มรายการ BOOST_LIBRARYDIR ประเภท PATH และตั้งค่าเป็นไดเร็กทอรีบูสต์ไลบรารีของคุณ
  • สุดท้าย เลือกคอมไพเลอร์ apt Visual Studio และดับเบิลคลิกที่ตัวเลือก "กำหนดค่า" ตามด้วยตัวเลือก "สร้าง"

2. mlpack

mlpack เป็นไลบรารี C++ ที่ออกแบบมาโดยเฉพาะสำหรับประสิทธิภาพ สัญญาว่าจะนำเสนอการใช้งานอัลกอริธึม ML ที่บุกเบิกได้อย่างรวดเร็วและขยายได้ ลักษณะเฉพาะของไลบรารี C++ นี้คือ มีอัลกอริธึม ML เป็นโปรแกรมบรรทัดคำสั่งอย่างง่าย การโยง Python การรวม Julia และคลาส C++ ซึ่งทั้งหมดนี้คุณสามารถรวมเข้ากับโซลูชัน ML ขนาดใหญ่ได้

วิธีการติดตั้ง mlpack?

ขั้นตอนการติดตั้ง MLPack แตกต่างกันไปในแต่ละแพลตฟอร์ม

สำหรับ Python คุณสามารถรับแพ็คเกจต้นทางผ่าน pip หรือ conda ดังนี้:

pip ติดตั้ง mlpack

conda install -c conda-forge mlpack

คุณสามารถอ้างถึง mlpack ในคู่มือการเริ่มต้นอย่างรวดเร็วของ Python สำหรับรายละเอียดเพิ่มเติม

สำหรับ Julia คุณสามารถรับแหล่งข้อมูลผ่าน Pkg ได้ดังนี้:

นำเข้า Pkg;

Pkg.add(“mlpack”)

สำหรับ Ubuntu, Debian, Fedora และ Red Hat คุณสามารถติดตั้ง mlpack โดยใช้ตัวจัดการแพ็คเกจ คู่มือ การ เริ่มต้นอย่างรวดเร็วบรรทัดคำสั่ง mlpack เป็นจุดเริ่มต้นที่ดี คุณยังสามารถสร้างมันจากแหล่งที่มาตาม บทช่วยสอนการสร้างลินุก ซ์

สำหรับ Windows คุณสามารถดาวน์โหลดไบนารีที่สร้างไว้ล่วงหน้า - Windows 64 บิต - MSI Installer และ Windows 64 บิต - ZIP คุณยังสามารถติดตั้งโดยใช้ตัวจัดการแพ็คเกจ เช่น vcpkg หรือสร้างจากซอร์สตามคำ แนะนำใน การ สร้าง Windows

ใน macOS คุณสามารถติดตั้งไลบรารีผ่าน homebrew ได้ดังนี้:

ชงติดตั้ง mlpack

อ่าน: งานการเรียนรู้ของเครื่องจ่ายสูงสุด

3. GRT (ชุดเครื่องมือการรู้จำท่าทาง)

GRT หรือ Gesture Recognition Toolkit เป็นไลบรารี C++ แบบโอเพนซอร์สแบบข้ามแพลตฟอร์ม ออกแบบมาเป็นพิเศษสำหรับการจดจำท่าทางแบบเรียลไทม์ ประกอบด้วย C++ API ที่ครอบคลุมซึ่งเสริมความแข็งแกร่งด้วย GUI ที่เรียบร้อยและใช้งานง่าย (ส่วนต่อประสานกราฟิกกับผู้ใช้)

GRT ไม่เพียงแต่เป็นมิตรกับผู้เริ่มต้นเท่านั้น แต่ยังง่ายต่อการรวมเข้ากับโปรเจ็กต์ C++ ที่มีอยู่อีกด้วย มันเข้ากันได้กับเซ็นเซอร์/อินพุตข้อมูลใดๆ และคุณสามารถฝึกมันด้วยท่าทางที่เป็นเอกลักษณ์ของคุณ นอกจากนี้ GRT ยังสามารถปรับให้เข้ากับการประมวลผลแบบกำหนดเองของคุณหรืออัลกอริธึมการแยกคุณลักษณะได้ตามต้องการ

จะติดตั้ง GRT ได้อย่างไร?

สิ่งแรกที่คุณต้องทำคือ ดาวน์โหลด แพ็คเกจ GRT หลังจากนี้ คุณต้องค้นหาโฟลเดอร์ GRT ในโฟลเดอร์หลักการรู้จำท่าทางสัมผัส-ชุดเครื่องมือ และเพิ่มโฟลเดอร์ GRT (รวมถึงโฟลเดอร์ย่อยทั้งหมด) ในโครงการที่ต้องการ

คุณสามารถเริ่มใช้ GRT ได้โดยเพิ่มโค้ดทั้งหมดที่จัดเก็บไว้ในโฟลเดอร์ GRT ไปยังโปรเจ็กต์ C++ ของคุณ ในกรณีที่คุณใช้ IDE เช่น VisualStudio หรือ XCode คุณสามารถเพิ่มไฟล์โฟลเดอร์ GRT ในโครงการของคุณตามเส้นทางนี้ – “ File -> Add Files to project คุณยังสามารถลากโฟลเดอร์ GRT (จาก Finder หรือ Windows Explorer) ไปที่ IDE เพื่อเพิ่มไฟล์ทั้งหมดจากโฟลเดอร์ GRT ไปยังโปรเจ็กต์ของคุณ

เมื่อคุณเพิ่มโค้ดที่อยู่ในโฟลเดอร์ GRT ลงในโปรเจ็กต์ของคุณแล้ว คุณสามารถใช้ฟังก์ชัน/คลาส GRT ทั้งหมดได้ สิ่งที่คุณต้องทำคือเพิ่มโค้ดสองบรรทัดต่อไปนี้ที่ด้านบนของไฟล์ส่วนหัวในโครงการที่คุณต้องการใช้โค้ด GRT:

#include “GRT/GRT.h”

int main (int argc, const char * argv[])

{

// รหัสหลักสำหรับโครงการของคุณ…

}

ในรหัสนี้ บรรทัดแรกจะเพิ่มไฟล์ส่วนหัว GRT หลัก (GRT.h) ให้กับโครงการ ไฟล์ GRT.h มีไฟล์ส่วนหัวของโมดูล GRT ทั้งหมด ดังนั้น คุณจึงไม่ต้องป้อนไฟล์ส่วนหัว GRT อื่นๆ ด้วยตนเอง อย่างไรก็ตาม บรรทัดที่สองประกาศว่ามีการใช้เนมสเปซ GRT คุณไม่จำเป็นต้องเขียน GRT:: WhatEverClass ทุกครั้งที่คุณต้องการใช้คลาส GRT – คุณสามารถเขียน WhatEverClass และทำเสร็จแล้ว

อย่างไรก็ตาม จำไว้ว่าคุณต้องระบุเส้นทางจริงที่คุณเก็บโฟลเดอร์ GRT ไว้ในฮาร์ดไดรฟ์ของคุณ ตาม IDE ที่คุณใช้

อ่านเพิ่มเติม: อาชีพในการเรียนรู้ของเครื่อง

บทสรุป

ไลบรารี C++ ทั้งสามนี้เหมาะสำหรับจัดการกับความต้องการ ML เกือบทั้งหมดของคุณ กุญแจสำคัญในการเรียนรู้ Machine Learning ใน C++ คือขั้นแรกในการเรียนรู้ไลบรารีเหล่านี้ ทำความเข้าใจเกี่ยวกับความเชี่ยวชาญพิเศษและฟังก์ชันต่างๆ จากนั้นนำไปปรับใช้กับข้อกำหนด ML เฉพาะ

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับแมชชีนเลิร์นนิง โปรดดูที่ IIIT-B & upGrad's PG Diploma in Machine Learning & AI ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 450 ชั่วโมง กรณีศึกษาและการมอบหมายมากกว่า 30 รายการ IIIT- สถานะศิษย์เก่า B, 5+ โครงการหลักที่ใช้งานได้จริง & ความช่วยเหลือด้านงานกับบริษัทชั้นนำ

อันไหนดีกว่าสำหรับการเรียนรู้ของเครื่อง - C ++ หรือ Python

C ++ และ Python เป็นสองภาษาโปรแกรมที่ใช้กันอย่างแพร่หลาย อย่างไรก็ตาม ขึ้นอยู่กับงานที่ทำ เราต้องเลือกอันที่จะใช้ เมื่อพูดถึงการสร้างเกมและระบบการเรียนรู้ C++ เป็นภาษาที่ต้องการ อย่างไรก็ตาม เมื่อพูดถึงแมชชีนเลิร์นนิง Python เป็นตัวเลือกที่ดีที่สุด นอกจากนี้ยังสะดวกสำหรับงานที่เกี่ยวข้องกับระบบข้อมูล นอกจากนี้ เนื่องจากไวยากรณ์ของ Python นั้นง่ายต่อการเข้าใจ จึงแนะนำสำหรับผู้เริ่มต้น อีกแง่มุมที่แตกต่างของ Python คือเป็นภาษาที่ตีความ ซึ่งหมายความว่าโค้ด Python ไม่ได้ถูกแปลเป็นเครื่องอ่านได้ในขณะใช้งานจริง

แมชชีนเลิร์นนิงมีความท้าทายอะไรบ้าง

เนื่องจากข้อมูลเป็นข้อมูลป้อนเข้าที่สำคัญที่สุดในการเรียนรู้ของเครื่อง ปัญหาหนึ่งที่ผู้เชี่ยวชาญด้านการเรียนรู้ของเครื่องเผชิญคือการขาดข้อมูลคุณภาพสูง การปรับให้พอดียังสามารถเกิดขึ้นได้หากข้อมูลไม่พอดีกับตัวแปรอินพุตและเอาต์พุต ข้อมูลมีความสำคัญ แต่ข้อมูลที่มากเกินไปอาจนำไปสู่การใช้มากเกินไป ส่งผลให้ประสิทธิภาพของอัลกอริธึมการเรียนรู้ของเครื่องไม่ดี การค้นหาผลลัพธ์ที่แม่นยำนั้นเป็นเรื่องง่ายด้วยโมเดลการเรียนรู้ของเครื่อง แต่ต้องใช้เวลามหาศาล ซึ่งเป็นอีกปัญหาหนึ่ง

ไลบรารีสแตติกและไดนามิกแตกต่างกันอย่างไร

ในแง่ของขนาด ไลบรารีสแตติกและไดนามิกต่างกัน เนื่องจากมีเพียงสำเนาเดียวของไลบรารีไดนามิกที่ได้รับการเก็บรักษาหรือจัดเก็บไว้ในหน่วยความจำ ไลบรารีไดนามิกจึงมีขนาดเล็กกว่าไลบรารีแบบสแตติกอย่างมาก ไฟล์เรียกทำงานประกอบด้วยไลบรารีสแตติกที่สร้างหรือเชื่อมโยง เป็นส่วนประกอบของแอปพลิเคชันของคุณ และไม่มีใครสามารถใช้งานได้ แม้ว่าไลบรารีไดนามิกจะถูกสร้างขึ้น เชื่อมโยง และติดตั้งอย่างอิสระ แต่โปรแกรมใดๆ ก็สามารถเข้าถึงได้ ซึ่งจะช่วยลดขนาดของโปรแกรมในขณะที่ยังซ่อนรหัส