góc nhìn về ai một người tự học & case studies · gÓ nhÌn vỀ ai • ase còn...

77
Góc nhìn về AI một người tự học & case studies

Upload: others

Post on 23-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Góc nhìn về AI một người tựhọc & case studies

ww

w.

st

ee

ni

fy

.c

om

MỤC LỤC

1. Giới thiệu

2. Góc nhìn về AI

3. Case study: idol detector

4. Case study: chuphinhthe

5. Case study: SteenNet

6. Resources

www.steenify.com

GIỚI THIỆU

• Backend Developer at FPT Software (2014)

• Full Stack Developer at Clearway Solution (2015 –2017)

• Technical Leader Grande tech team (2017 – 2018)

• CEO Steenify (2018 – now)

GÓC NHÌN VỀ AI

www.steenify.com

GÓC NHÌN VỀ AI

• Bản chất chỉ là một cách lập trình để cố gắng bắt chước sự tự học của con người.

• Chuyện gì xảy ra nếu chat bot được viết bằng if else mà kết quả vẫn tốt?

• Rất nhiều người đề cao vai trò của toán, thậm chí có người còn bảo nên về trường học lại toán rồi mới học AI. Có thật như vậy không?

www.steenify.com

GÓC NHÌN VỀ AI

• Dựa trên kinh nghiệm của mình thì nó ko nhất thiết phải khó khăn như vậy, hầu hết những lời đó đều là lời nói quá.

• Bạn không cần gì quá nhiều: Chỉ cần quyết tâm và 1 chút kinh nghiệm lập trình là đủ.

www.steenify.com

GÓC NHÌN VỀ AI

Tại sao lại những lời nói đề cao việc học toán là lời nói quá?

• Tùy vào mục tiêu của bạn khi học AI(ML), bạn học để ứng dụng hay học để làm researcher tìm kiếm ra những model, thuật toán mới cho người khác sử dụng.

• Case học để làm researcher thì bỏ qua, học xây nhà mà ko học xây móng thì chịu.

www.steenify.com

GÓC NHÌN VỀ AI

• Case còn lại học để ứng dụng thì ko nhất thiết phải biết toán quá nhiều. Bạn chỉ cần học vừa đủ để hiểu tại sạo thuật toán này lại chạy như này, như kia và sử dụng thư viện hoặc model có sẵn là đủ.

• Toán học thời cấp 3 mà mình đã học và các khóa học online hiện tại đã có dạy nội dung này.

www.steenify.com

GÓC NHÌN VỀ AI

Cái gì? Toán học cấp 3 là đủ á?

• Xây dựng model AI (Machine Learning) đa phần hiện tại, giống y hệt bài toán đi tìm hệ số cho phương trình mà mình đã học thời cấp 3.

www.steenify.com

GÓC NHÌN VỀ AI

VD: Dự đoán giá nhà

Số phòng ngủ Diện tích (m2) Khu vực Giá bán (VND)

3 90 Quận 1 5,000,000,000

2 62 Bình Thạnh 1,800,000,000

2 74 Bình Thạnh 2,400,000,000

1 45 Quận 1 3,000,000,000

Dữ liệu hiện có

www.steenify.com

GÓC NHÌN VỀ AI

VD: Dự đoán giá nhà

Số phòng ngủ Diện tích (m2) Khu vực Giá bán (VND)

2 80 Quận 1 ?????

Làm sao dự đoán giá nhà này??

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm:

1. Chuyển đổi tên quận ra số? Tùy theo vị trí mà mình có thể cho nó số cao hay thấp.

• Quận 1 -> 2 (Vì vị trí hot hơn Bình Thạnh)

• Bình Thạnh -> 1

Số phòng ngủ Diện tích (m2) Khu vực Giá bán (VND)

3 90 2 5,000,000,000

2 62 1 1,800,000,000

2 74 1 2,400,000,000

1 45 2 3,000,000,000

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm:

2. Chuyển về dạng phương trình:

a*x1 + b*x2 + c*x3 + d = y

Số phòng ngủ Diện tích (m2) Khu vực Giá bán (VND)

3 * a 90 * b 2 * c d 5,000,000,000

2 * a 62 * b 1 * c d 1,800,000,000

2 * a 74 * b 1 * c d 2,400,000,000

1 * a 45 * b 2 * c d 3,000,000,000

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm:

3. Random chọn a, b, c và d:

Số phòng ngủ Diện tích (m2) Khu vực Giá bán (VND) Giá dự đoán Chênh lệch

3 * 100 90 * 83 2 * 203 100 5,000,000,000 8,816 4,999,991,724

2 * 100 62 * 83 1 * 203 100 1,800,000,000 5,649 1,799,994,351

2 * 100 74 * 83 1 * 203 100 2,400,000,000 6,645 2,399,993,355

1 * 100 45 * 83 2 * 203 100 3,000,000,000 4,341 2,999,995,659

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm: (Gradient Descent)

4. Điều chỉnh a, b, c và d từ từ để làm sao cho chênh lệch thấp nhất. Có thể viết thành:

(Giá thật1 – giá dự đoán1) + (Giá thật2 – giá dự đoán2) + ... = Nhỏ nhất

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm:

Viết như kiểu trên thì sẽ không biết nó nhỏ nhất khi nào. Nên người ta thêm bình phương vào đó.

(Giá thật1 – giá dự đoán1)2 + (Giá thật2 – giá dự đoán2)2 + ... = Nhỏ nhất

Cái này người ta gọi là Loss function và sẽ điều chỉnh a, b, c, d để làm cho output của loss function này nhỏ nhất.

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm:

• Đạo hàm cái loss function đó theo từng biến a, b, c, d, rồi thế data mẫu vào để ra 1 con số cụ thể.

• Và điều chỉnh giá trị của các biến:

a = a – alpha * (giá trị đạo hàm của loss function theo biến a)

b = b – alpha * (giá trị đạo hàm của loss function theo biến b)

c = c – alpha * (giá trị đạo hàm của loss function theo biến c)

d = d – alpha * (giá trị đạo hàm của loss function theo biến d)

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm:

• Điều chỉnh từ từ cho đến khi nào thấy ổn thì ngừng lại.

www.steenify.com

GÓC NHÌN VỀ AI

Đồ thị VD: Của loss function, lúc mới chọn random a, b, c & d

www.steenify.com

GÓC NHÌN VỀ AI

Đồ thị VD: Đồ thị sau khi mình điều chỉnh

www.steenify.com

GÓC NHÌN VỀ AI

Cách làm:

5. Sau khi tìm được số a, b, c rồi. Giờ sử dụng như thế nào?

VD:

Số phòng ngủ Diện tích (m2) Khu vực Giá bán (VND)

2 80 Quận 1 ?????

a*2 + b*80 + c*2 + d = giá bán

www.steenify.com

GÓC NHÌN VỀ AI

www.steenify.com

GÓC NHÌN VỀ AI

• Training 1 Neural network không khác gì phần trên.

• Output có thể là: 1 số hoặc 1 array

• Neural network khi ra dạng toán, sẽ trông giống như thế này:

www.steenify.com

GÓC NHÌN VỀ AI

• Như vậy, neural network chỉ là hàm lồng vào hàm => Khi biểu diễn lên đồ thị thì ta sẽ được đường phức tạp hơn, làm được nhiều task khó hơn.

www.steenify.com

GÓC NHÌN VỀ AI

Quan điểm cá nhân:

• AI hiện tại không giống cách con người đang tư duy. Cần phải có gì đó sáng tạo hơn để thay đổi.

CASE STUDY: IDOL DETECTOR

www.steenify.com

CASE STUDY: IDOL DETECTOR

Context:

• Sau khi đi một workshop về AI, thấy speaker quá đề cao độ khó và phức tạp của lập trình AI.

• Làm showcase để chứng minh ai cũng có thể học AI và ứng dụng được.

www.steenify.com

CASE STUDY: IDOL DETECTOR

www.steenify.com

CASE STUDY: IDOL DETECTOR

Cách nhận diện khuôn mặt:

1. Tách khuôn mặt trong hình ra.

2. Đưa hình khuôn mặt vào trong 1 hàm, output của hàm này sẽ là 1 array 128 phần tử. (Face encoding).

3. So sánh với các khuôn mặt đã được encode (Array[128] phần tử) lưu trữ trong database.

www.steenify.com

CASE STUDY: IDOL DETECTOR

www.steenify.com

Mình đã làm gì?

CASE STUDY: IDOL DETECTOR

www.steenify.com

Mình đã làm gì?

CASE STUDY: IDOL DETECTOR

www.steenify.com

Phản hồi của cộng đồng mạng:

CASE STUDY: IDOL DETECTOR

www.steenify.com

Phản hồi của cộng đồng mạng:

CASE STUDY: IDOL DETECTOR

www.steenify.com

CASE STUDY: IDOL DETECTOR

Vấn đề:

• Xác định sai tên, đối với hình tìm trên google.

• Detect khuôn mặt bị sai

www.steenify.com

CASE STUDY: IDOL DETECTOR

Nguyên nhân:

• Thuật toán xác định khuôn mặt chưa tốt.

• Khuôn mặt lúc đưa vào để encoding, chưa được điều chỉnh cho ngay ngắn.

• Data training của Siamese Network mà mình sử dụng là hình ảnh của người châu Âu. Cần train lại cho người Châu Á.

• Thuật toán xác định tên ở đầu ra chưa tốt

www.steenify.com

Nguyên nhân:

CASE STUDY: IDOL DETECTOR

www.steenify.com

CASE STUDY: IDOL DETECTOR

Giải pháp:

• Chọn thuật toán khác để cắt khuôn mặt

• Điều chỉnh khuôn mặt cho thẳng trước khi đưa vào network

• Chọn thuật toán khác để xác định khuôn mặt của ai

www.steenify.com

Kiến trúc sau khi cải tiến:

CASE STUDY: IDOL DETECTOR

www.steenify.com

Phản hồi của cộng đồng mạng:

CASE STUDY: IDOL DETECTOR

www.steenify.com

Phản hồi của cộng đồng mạng:

CASE STUDY: IDOL DETECTOR

www.steenify.com

CASE STUDY: IDOL DETECTOR

Bài học rút ra:

• Sử dụng những Network có sẵn, rồi resuse lại, thay vì phải train lại từ đầu.

• Test với ít data trước để xác định độ chính xác của code của mình. Sau khi, đã ok rồi mới thêm data vào.

• Kết hợp nhiều model để có output tốt.

• Khi gặp khó, hãy join vào 1 group thuộc chuyên môn để hỏi cho nhanh.

• Sự ủng hộ của cộng đồng mạng là động lực tốt để bạn tiếp tục code.

CASE STUDY: Chuphinhthe

www.steenify.com

CASE STUDY: Chuphinhthe

Vấn đề:

• Đăng ký bằng lái xe cần hình thẻ. Mình phải đi gần 1 tiếng đồng hồ mới tìm ra được tiệm chụp hình.

• Đặt câu hỏi: Tại sao không có dịch vụ gì cho mình upload hình, hoặc tự chụp, rồi mình chỉ cần ngồi chờ hình ship tới cho mình?

www.steenify.com

CASE STUDY: Chuphinhthe

Giải pháp, làm thử 1 app:

• Có thể remove và đổi màu background realtime.

• Người dùng chỉ cần dùng app đó để chụp.

• Điền thông tin ship.

• Mình in ra và ship tới cho khách.

www.steenify.com

CASE STUDY: Chuphinhthe

Bước 1 Bước 2 Bước 3

www.steenify.com

CASE STUDY: Chuphinhthe

AI ở đâu trong app này?

• Realtime remove background và đổi màu background

Làm như thế nào?

• Sử dụng 1 model deep learning có sẵn để cắt hình người ra.

• Convert deep learning model qua định dạng để có thể chạy trên iOS hoặc Android.

• Sau đó, stream hình ảnh từ camera qua model này. Rồi điều chỉnh output.

www.steenify.com

CASE STUDY: Chuphinhthe

Các model đã thử nghiệm:

Semantic Soft Segmentation:

• Pretrained model quá nặng (700MB)

• Độ chính xác cao

www.steenify.com

CASE STUDY: Chuphinhthe

Model thử nghiệm tiếp theo:

Mask R-CNN:

• Quá phức tạp để hiểu

• Pretrain model cũng tương đối nặng (200MB), nhưng cũng tiềm năng.

www.steenify.com

CASE STUDY: Chuphinhthe

Vấn đề:

• Tốn quá nhiều thời gian để đọc hiểu các model (1 tháng).

• Xử lý làm đẹp trên app tự viết quá tốn thời gian, mà không bằng các app khác.

• Học cách xử lý stream video bằng native code.

• Code API của native code qua JS

Mình bỏ cuộc

www.steenify.com

CASE STUDY: Chuphinhthe

Cách làm mới:

Mình suy nghĩ lại bản chất của vấn đề:

• Chủ yếu khách cần hình và ship.

• Mình có thể nhờ khách tự chụp và upload hình của họ lên website của mình và xử lý tay.

Sử dụng engine chạy bằng “cơm”.

www.steenify.com

CASE STUDY: Chuphinhthe

Bài học rút ra:

• Không “thú tính”.

• Dành thời gian suy nghĩ kỹ về giải pháp trước khi bắt tay vào làm.

CASE STUDY: SteenNet

www.steenify.com

CASE STUDY: SteenNet

Vấn đề:

• Làm ra sản phẩm rồi, nhưng không biết làm như thế nào để giới thiệu sản phẩm ra thị trường Âu Mỹ.

www.steenify.com

CASE STUDY: SteenNet

Giải pháp:

• Đăng bài giới thiệu sản phẩm lên những trang lớn.

• Liên hệ với nhà báo để họ viết bài về sản phẩm của mình.

www.steenify.com

CASE STUDY: SteenNet

Giới thiệu SteenNet:

• SteenNet là platform giúp startup quảng bá sản phẩm của mình.

• Bằng cách tự động hóa quá trình post bài cho phù hợp với sản phẩm và liên hệ với các nhà báo để giới thiệu sản phẩm cho họ.

www.steenify.com

CASE STUDY: SteenNet

SteenNet hoạt động như thế nào:

1. Startup gửi thông tin của startup & thông tin về sản phẩm mà startup đó làm.

2. SteenNet team sẽ viết pitch và gửi cho startup review, cho tới khi nào OK.

3. Sử dụng AI để tìm ra 250 những nhà báo phù hợp nhất với startup này trong database 500k nhà báo.

4. Gửi email cho những nhà báo này, và bắt đầu tạo thread trên Reddit, Quora & các Startup directory khác. Sau đó gửi report về cho Startup.

www.steenify.com

CASE STUDY: SteenNet

AI ở đâu trong SteenNet:

• Tìm 250 nhà báo phù hợp nhất trong database của 500k nhà báo, dựa vào mô tả của startup.

www.steenify.com

CASE STUDY: SteenNet

Cách làm:

• 500k nhà báo trong database cần có tags để xác định lĩnh vực. VD: #technology, #android #samsung

• Khi startup đưa description cho mình thì mình cần dựa trên thông tin đó để xác định tags của startup cho đúng.

• Sau đó, mình compare tags của database và startup gần giống nhau nhất thì suggest ra.

www.steenify.com

CASE STUDY: SteenNet

Khó khăn:

• Collect dữ liệu và verify dữ liệu rất tốn thời gian.

Giải pháp là mua dữ liệu, và sử dụng tool để verify.

• Code recommendation:

Giải pháp là lên upwork tìm chuyên gia, nhờ chuyên gia code ra base, rồi hướng dẫn mình customize lại.

www.steenify.com

CASE STUDY: SteenNet

Kết quả:

• Release trong 2 tuần kể từ khi có ý tưởng.

• Doanh thu của SteenNet là 11k$ trong tháng vừa rồi.

www.steenify.com

CASE STUDY: SteenNet

Bài học rút ra:

• Check xem data của mình cần làm đã có sẵn trên mạng chưa. Nếu có và mức giá phù hợp thì cứ bỏ tiền ra mua để đỡ tốn thời gian thu thập.

• Nhờ sự trợ giúp của các chuyên gia sẽ giải quyết vấn đề nhanh hơn là tự research và code từ đầu.

www.steenify.com

Kết luận

• Key point để ứng dụng AI hoặc bất kì công nghệ nào khác không phải là code, mà là nhìn ra vấn đề. Rồi sau đó mới sử dụng công nghệ để apply vào các cách giải quyết vấn đề.

• Nếu mức chi phí không quá lớn thì nên đầu tư vào để giải quyết vấn đề nhanh hơn.

www.steenify.com

Có bạn hỏi: “Ủa, nãy giờ em toàn thấy anh đi lấy của người khác không mà, có cái nào anh tự build đâu?”

• Train 1 model từ đầu rất tốn thời gian & tiền bạc.

• Xác định cái mình gọi là thành công, trước khi bắt đầu việc gì đó.

• Định nghĩa thành công trong các case study của mình là:

✓ Idol detection: Ứng dụng được kiến thức đã học.

✓ chuphinhthe: Có doanh thu.

✓ SteenNet: Có doanh thu

www.steenify.com

Learning Path

1. Machine Learning – Andrew Ng (https://www.coursera.org/learn/machine-learning/)

2. Deep learning specialization – Andrew Ng (https://www.coursera.org/specializations/deep-learning)

3. Computer Vision - CS231n (https://youtu.be/NfnWJUyUJYU)

4. Natural Language Processing - CS224N (https://youtu.be/8rXD5-xhemo)

5. Tensorflow In Practice - Laurence Moroney (https://www.coursera.org/specializations/tensorflow-in-practice)

www.steenify.com

Learning Path

Làm gì tiếp theo sau khi học xong?

• Tham gia những cuộc thi online (VD: Kaggle -https://www.kaggle.com/).

• Chọn vấn đề mình yêu thích và giải quyết vấn đề đó.

Resources

www.steenify.com

Resources

Tìm những model có sẵn:

• https://github.com/BVLC/caffe/wiki/Model-Zoo• https://www.google.com/

Cloud Credits:

• Google Cloud for Startup 3k$ (https://cloud.google.com/developers/startups/)

• AWS Activate 1k$ (https://aws.amazon.com/activate/)

• Mua Credit ở Product Hunt Founder Club 720$/năm (https://www.producthunt.com/founder-club/)

www.steenify.com

Resources

Tìm kiếm outsource: https://servicelist.io, trang này bao gồm:

• Graphics designer: 250 – 350$/tháng• UI/UX designer: 250 – 350$/tháng• Developer• Content writer: 250 – 350$/tháng• Marketing: 99 – 1500$/tháng

https://www.upwork.com/, để tìm người giỏi để học.

www.steenify.com

Resources

Tìm kiếm ý tưởng:

• Hacker News: https://news.ycombinator.com

• Product Hunt: https://www.producthunt.com/

• Github trending: https://github.com/trending

www.steenify.com

Resources

Học về startup:

• Startupschool: https://www.startupschool.org

• Stripe Altas (https://stripe.com/atlas) – 500$:

- Support thành lập công ty ở US.

- Tạo account Stripe để thanh toán online, và tài khoản ngân hàng ở US.

- Cloud Credits 20k$ Google Cloud, 5k$ AWS

Q&A

Thank you!