góc nhìn về ai một người tự học & case studies · gÓ nhÌn vỀ ai • ase còn...
TRANSCRIPT
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)
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:
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
• 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.
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
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
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
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
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.
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
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.
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 đề đó.
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