Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Chuyện tình chàng Coder

Ngày xửa ngày xưa, ở một công ty phần mềm nọ, có một chàng thanh niên làm nghề coder. Công việc của chàng là gia công phần mềm theo yêu cầu của khách hàng…
Chàng có kĩ năng rất tốt, các ngôn ngữ lập trình từ bậc thấp như Cobol, Assembly đến bậc cao như C/C++, Java, C# đều rất thuần thục. BUL và PM đều yêu quý và tạo điều kiện cho chàng được phát triển chuyên môn của bản thân..
Vì giỏi như vậy, nên chàng sinh ra kiêu ngạo, coi thường đồng nghiệp, trên chiếc iPhone của chàng, có một phần mềm trợ lý ảo tên là Siri. Mỗi sáng khi thức dậy, chàng đều hỏi trợ lý ảo của mình
iPhone ngự ở trên giường
Thế gian ai code được dường như ta
Siri liền nói
Coder giỏi nhất trên đời
Code nhanh hơn não là người chứ ai
Trình độ code của ngài đã đạt đến mức “Tay nhanh hơn não.”
Chàng Cuder nghe xong mừng lắm, từ đó chàng càng không coi ai ra gì.
Rồi một ngày, khách hàng yêu cầu chàng phát triển một phần mềm Face Recogintion. Mặc dù đã sử dụng các loại thuật toán khác nhau như Model-based Face Tracking, Edge-Orientation Matching, Weak classifier cascades.. đông tây y kết hợp, nhưng khi đưa vào thực tế, các thuật toán đều gặp nhược điểm. Chẳng hạn như điều kiện ánh sáng thay đổi, mặt người nghiêng, thay đổi cảm xúc thì thuật toán không hoạt động.
Sau nhiều đêm OT, ON mà không thành công, chàng mệt mỏi rã rời, về nhà kể chuyện cho trợ lý ảo của mình
Ta buồn lắm, không biết ta có còn là coder giỏi nhất nữa không
Siri trả lời
Xưa kia ngài giỏi nhất trần
Ngày nay “máy học” muôn phần giỏi hơn.


Máy học là gì, có ăn được không??
Học máy hay còn gọi là machine learning là một nhánh nhỏ của trí tuệ nhân tạo (AI) liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép máy tính "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Học máy rất gần với suy diễn thống kê (statistical inference) thưa ngài


Deeplearning

Các ứng dụng điển hình của Machine Learning có thể kể đến như cỗ máy tìm kiếm Google. Hằng ngày ngài vào Google tìm kiếm và để ý rằng, Google có thể hiểu được ngữ nghĩa của từ khóa mà ngài tìm kiếm nhằm gợi ý và đưa ra các kết quả tìm kiếm tốt hơn hay gợi ý các kết quả tìm kiếm cho ngài
Ngoc trinh facebook

  • Hoặc như Facebook, có thể nhận dạng khuôn mặt ở chức năng tag ảnh, có thể gợi ý bài viết liên quan hoặc gợi ý kết bạn (Thuật toán DeepFace)


  • Ngài có thể dùng Machine Learning để áp dụng cho bài toán nhận dạng của mình. Tuy nhiên để làm ML, ngài phải học về đại số tuyến tính, xác suất thống kê, biết lập trình Python, Mathlab..
  • Ta biết đi đâu để học bây giờ.
  • Ngài hãy đi tìm nàng Bạch Code, cháu 10 đời của Bạch Tuyết, họ hàng xa với Bạch Cốt Tinh, nàng sẽ dạy cho ngài kiến thức về Machine Learning
Nàng ta làm ở Google
Ở bên nước Mỹ muôn trùng xa xôi
Chàng cuder mừng lắm, liền khăn gói đáp máy bay giá rẻ China Airline sang Sillicon Valley để gặp nàng Bạch Code…
Nàng Bạch Code hiện giờ đang là kĩ sư của Google DeepMind. Nhóm nghiên cứu về trí tuệ nhân tạo của Google, là tác giả của phần mềm Deep Learning Alpha Go nổi tiếng (Phần mềm đã đánh bại cao thủ cờ vây).
Đó là một người con gái “xinh đẹp tuyệt trần”. Kính dày như đít chai, da trắng như bạch tạng, tóc xù như lông nhím. Nàng đúng là một kĩ sư CNTT thực thụ.
Nàng Bạch Code đã giảng giải cho chàng Cuder những kiến thức cơ bản nhất về Machine Learning..
Chàng hãy nhìn Machine Learning theo góc độ của khoa học thống kê. Hãy xem bài toán nhận dạng mặt như Pattern recognition (nhận diện mẫu hay nhận diện quy luật).
Nếu chàng gặp một cô gái xinh xinh nào đó (như Ngọc Trinh chẳng hạn), chàng có thể nhớ những đặc điểm trên khuôn mặt của nàng đó như mặt trái xoan, mũi cao, răng khểnh, mắt bồ câu. Nếu gặp càng nhiều, hoặc xem ảnh càng nhiều thì chàng càng nhớ, và lần sau nếu gặp lại cô gái đấy, chàng sẽ nhận ra được cô ấy là Ngọc Trinh.


Machine Learning cũng tương tự như vậy, để nhận dạng một khuôn mặt nào đó (Ngọc Trinh), chàng cần làm những bước sau

  • Chuẩn bị dữ liệu để cho máy tính “học”. (Tập ảnh của Ngọc Trinh)
  • Xây dựng mô hình thông qua dữ liệu đầu vào. (Algorithm)
  • Đánh giá mô hình vừa mới xây dựng. (Model)

Phương pháp học đơn giản nhất là học có giám sát (Supervised Learning)

Supervised Learning

Supervised Learning (SL) là một kĩ thuật học máy để học tập từ tập dữ liệu được gán nhãn cho trước. Tập dữ liệu cho trước sẽ chứa nhiều bộ dữ liệu. Mỗi bộ dữ liệu có cấu trúc theo cặp {x, y} với x được xem là dữ liệu thô (raw data) và y là nhãn của dữ liệu đó. Nhiệm vụ của SL là dự đoán đầu ra mong muốn dựa vào giá trị đầu vào.
Ví dụ chàng đưa tập ảnh dữ liệu vào máy tính và gán Label “Ngọc Trinh” cho từng ảnh. Nhiệm vụ của thuật toán là xây dựng một hàm có thể xuất ra giá trị đầu ra tương ứng với tập dữ liệu ảnh trên.
Một số framework về ML như OpenFace sẽ extract một vector features mô tả đặc trưng của khuôn mặt trong ảnh.
Vector features là ma trận là các tham số đặc trưng của mặt kiểu như Da, Mũi, Mồm, Mắt và hàm đầu ra chính là khuôn mặt được nhận dạng
Như vậy, khi đưa một ảnh bất kì vào để nhận dạng, vector features sẽ được extract và so sánh với các đặc điểm đã được học để nhận dạng
Da
Mũi
Răng
Mắt
Output
Trắng
Cao
Khểnh
Bồ Câu
Ngọc Trinh
Đen
Tẹt
Vẩu
Cuder
Dễ nhận ra, học có GIÁM SÁT tức là máy học dựa vào sự trợ giúp của con người, hay nói cách khác con người dạy cho máy học và giá trị đầu ra mong muốn được định trước bởi con người. Tập dữ liệu huấn luyện hoàn toàn được gán nhãn dựa vào con người. Tập càng nhỏ thì máy tính học càng ít.
Cụ thể ở đây là chàng đưa tập ảnh đầu vào máy tính và “nói” cho máy tính biết rằng “Đây là Ngọc Trinh” hãy học đi. Máy tính sẽ xây dựng một model với các tham số đầu vào Da, Mũi, Răng, Mắt để mô tả mối quan hệ giữa Ngọc Trinh (hàm đầu ra) với các tham số đầu vào trên.

Unsupervised Learning

Unsupervised Learning (UL) là một kĩ thuật của máy học nhằm tìm ra một mô hình hay cấu trúc bị ẩn bởi tập dữ liệu KHÔNG được gán nhãn cho trước. UL khác với SL là không thể xác định trước output từ tập dữ liệu huấn luyện được. Tùy thuộc vào tập huấn luyện kết quả output sẽ khác nhau. Trái ngược với SL, tập dữ liệu huấn luyện của UL không do con người gán nhãn, máy tính sẽ phải tự học hoàn toàn. Có thể nói, học KHÔNG GIÁM SÁT thì giá trị đầu ra sẽ phụ thuộc vào thuật toán UL.
Một cách toán học, Unsupervised learning là khi chúng ta chỉ có dữ liệu vào X mà không biết nhãn Y tương ứng. Máy tính sẽ tự tìm ra mối quan hệ trong tập dữ liệu đó
Các bài toán Unsupervised learning được tiếp tục chia nhỏ thành hai loại:

Clustering (phân nhóm)

Một bài toán phân nhóm toàn bộ dữ liệu X thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm.
Ví dụ
Phân nhóm khách hàng dựa trên hành vi mua hàng.

  • Khách hàng hay mua túi Hermes, Luis Viston thuộc nhóm showbiz. 
  • Khách hàng hay mua rau dưa, gà vịt là nhóm bà nội trợ. 
  • Khách hàng hay chơi game, lướt facebook là nhóm trẻ trâu

Association

Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước.
Ví dụ khách hàng mua iPhone thì thường hay mua thêm phụ kiện. Phụ nữ mua quần áo thì thường sắm thêm son phấn dựa vào đó tạo ra một hệ thống gợi ý khách hàng (Recommendation System), thúc đẩy nhu cầu mua sắm.
Và từ đó, mỗi ngày chàng Cuder lại đến phòng làm việc của nàng Bạch Code để nghe nàng giảng dạy về Machine Learning. Chàng đã được học rất nhiều khái niệm mới như Cost Function, Hierarchical learning, Gradient descent,… Cả một chân trời kiến thức mở ra cho chàng.
Thế rồi hai người yêu nhau, chàng Cuder quyết định rời bỏ công ty phần mềm nọ, và hai người sống với nhau hạnh phúc ở Sillicon Valley đến trọn đời..



Đăng nhận xét

0 Nhận xét