Bài đăng

Đang hiển thị bài đăng từ Tháng 5, 2019

Các thói quen xấu khi viết code của người mới lập trình

Hình ảnh
Photo by Glenn Carstens-Peters on Unsplash Chào mọi người, năm học vừa rồi mình có cơ hội tiếp xúc với nhiều bạn mới làm quen với lập trình. Đồng thời có review code của các bạn đó. Dưới đây là các điểm mình thường xuyên gặp phải trong quá trình đọc code mà mình cho là xấu. Nếu loại bỏ được chúng, mình tin rằng các bạn sẽ tiến xa hơn trong lập trình. Lưu ý: Những gì mình sắp nói tiếp theo hoàn toàn dựa trên quan điểm và kinh nghiệm lập trình của mình. Tuy nhiên, một số điều thật sự được coi là bad-practice (thói quen xấu) trong giới lập trình viên. 1. Code quan trọng là thuật toán Ở phổ thông, các kỳ thi Tin học đều là thi chú trọng vào thuật toán. Điều này dẫn tới nhận định rằng: “Trong lập trình, cái quan trọng là thuật toán”. Điều này dẫn tới việc nhiều bạn chỉ chú ý tới việc tìm lời giải hay và tối ưu nhất khi code nhưng lại quên chia hàm, đặt tên biến bừa bãi. Kết quả của thói quen này chính là những đoạn code thiếu tổ chức và “bốc mùi”. (Hay còn gọi là code xấu) Tư

[Nhập môn Machine Learning] Bài 5: Gradient Descent

Hình ảnh
Ở bài trước chúng ta đã nói đến Cost Function. Bây giờ, ta cần một thuật toán giúp máy tính có thể tìm điểm nhỏ nhất của $J(\theta)$. Vậy nên ở bài này chúng ta sẽ tìm hiểu một trong những thuật toán phổ biến trong Machine Learning chính là Gradient Descent. Đạo hàm Ở cấp 3, ta đã biết đến khái niệm đạo hàm. Về cơ bản, đó chính là lượng y sẽ thay đổi theo khi ta thay đổi x (hay còn được biết đến là $\dfrac{dy}{dx}$ ). Một trong những đặc điểm của đạo hàm (hay gradient) là ta có thể coi chúng như một vector và vector này luôn chỉ về hướng ta cần di chuyển x để giá trị của y tăng lên. Gradient Descent Ý tưởng chính của Gradient Descent chính là nếu ta ở một điểm bất kỳ và tính đạo hàm của điểm đó. Sau đó, đi ngược lại hướng của vector đạo hàm mà ta đã có được sẽ đưa ta tới vị trí mà tại đó giá trị của y đạt cực tiểu. Trong Cost Function, ta có $J(\theta)$ là một hàm theo $\theta$. Ta biết rằng Cost Function này luôn có một cực tiểu là giá trị nhỏ nhất của toàn hàm. B