책은 한 번만 읽어서는 잘 알 수 없다고 생각한다. 책을 쓰는 작가가 많은 시간 동안 고민해서 내놓은 300~400페이지의 결과를 단 두세 시간 정도의 독서로 완전히 파악할 수 있는것이 오히려 신기한 일이 아닐까. 사실 이런 생각을 깊게 한 건 아니었다. 이런 이야기는 언젠가 어떤 드라마에서도 나왔던 것 같다. 선생님이 어떤 책을 읽어 오라고 하자, 학생이 이 책 어릴 때 이미 읽었던 건데요라고 답했다. 그러자 선생님이 너희가 달라졌잖아, 읽는 사람이 달라지면 글도 다르게 보일 거야 이런 식으로 말했던 것 같다. 그때는 새로운 시각이어서 그냥 신기하다 정도였는데. 이번 책을 읽고는 확실하게 느꼈던 것 같다. 처음 어린 왕자를 읽은 것은 초등학생 때다. 그때는 어린 왕자라는 동화 같은 이미지에 읽었었던 것..
목차 Setting up your Machine-Learning Application Train/Dev/Test set train set : 모델을 훈련하는데 사용한다. dev set : 훈련된 모델을 검증하는데 사용한다. test set : 잘 작동하는지에 대한 평가로서 사용한다. dev set은 valid set이라고 부르기도 한다. 이 세개의 set에 대한 비율을 설정해 줘야한다. 비율을 정하는건 데이터의 양에 따라 달라지는데 데이터가 1000~10000개 정도의 적당한 데이터셋에서는 train : dev : test = 8 : 1 : 1 혹은 = 6 : 2 : 2 정도로 사용한다 혹 데이터가 굉장히 많아 1,000,000개 정도의 데이터가 있다면 dev, test set은 훈련이 아니라 검증의 용..
목차 왜 사랑을 하고 싶을까? 난 지금 별로 사랑이 하고싶지 않다. 내 취미생활도 해야하고, 연구실에서 맡은 일도 해야하고, 내 개인적인 공부도 아직 할게 많고, 이렇게 가끔씩 쓸데 없는 생각도 해야하고, 취업을 위해서 정보도 찾아봐야하고, 친구관계도 열심히는 아니지만 나름 계속 지내야하고 내 우선순위로는 일단 위의 사항들이 위라서, 따로 사랑을 하고 싶지 않다. 근데, 어쩔 수 없는 걸까? 계속 내 마음속에는 욕구가 자리 잡는다. 필요 없을땐 좀 끄게 toggle식이면 안될까 싶은데, 참 어렵다. 그래서 곰곰히 생각을 해봤다. 대체 왜 난 사랑이 계속 하고 싶어지는걸까? 애초에 사랑을 하면 뭐가 좋지? 라고 생각을 하게 됬다. 내가 해본 사랑이라곤 딱 한번 밖에 없지만, 내가 해본건 그 경험뿐이니 그걸..
목차 Shallow Nueral Network 각 layer를 구분하기 위해 $$ a^{[l]} $$ 윗첨자를 붙여 구분한다. 각각의 유닛을 구분하기 위해 $$ a_{u} $$ 아랫첨자를 붙여 구분한다. 하나하나의 unit을 살펴보면 하나하나가 이렇게 구성되어있다. 하나하나의 unit이 각각 로지스틱 회귀를 구성하고 있다. Vectorizing 이것들을 벡터로 나타내면 다음과 같다. 이 하나하나의 훈련예제(training example)들을 한번에 계산 해 볼 것이다. 각각의 훈련예제는 윗첨자 (m)으로 구분한다. $$ z^{(m)} $$ Activation Function 입력을 변환해주는 함수 sigmoid function $$ A^{[l]} = \sigma(Z^{[l]}) $$ $$ a = \fra..
목차 글 쓸 때마다 찾기는 싫어서 마크다운 문법은 많은데, 많이 쓰지는 않고, 그렇다고 일일이 찾아보기는 귀찮아서... 첫째, 제목(h 태그) h1, h2... 의 태그를 적용시켜준다. h1 h2 h3 h4 h5 h6 # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6 둘째, BlockQuote 공식문서는 이렇던데, 그냥 부연설명느낌이다. 이런거다 이렇게 쑤면된다. > 이런거다 셋째, 목록 첫째 둘째 셋째 1. 첫째 2. 둘째 3. 셋째 쉽다 쉬워 만약 순서가 없는 목록이라면 기호 (*, -, +)를 사용한다. 첫째 둘째 셋째 첫째 둘째 셋째 첫째 둘째 셋째 * 첫째 * 둘째 * 셋째 + 첫째 + 둘째 + 셋째 - 첫째 - 둘째 - 셋째 첫째 둘째 셋째 * 첫째 - 둘째 + ..
목차 추상클래스, 인터페이스 너무도 헷갈리는 개념 둘이다. 사실 별로 크게 차이가 나지도 않긴 하지만. 일단 추상클래스가 무엇인지 알아보자. 추상클래스란 구현부가 없는 메서드가 하나 이상 있는 클래스를 추상 클래스라 한다. public class Keyboard{ private int keypressure; public abstract void Keydown(); public void turnOn(){ System.out.println(“turn On keyboard”); } } 이렇게 Keydown()메서드의 구현부가 없는 것. 이것이 추상클래스이다. 그럼 인터페이스는 무엇일까. 인터페이스는 너무 많은 의미로 쓰인다. 여기서는 객체지향 프로그래밍에서 사용하는 새로운 의미의 인터페이스 이다. 인터페이스는..
목차 생성자 객체를 인스턴스화 할 때, 초기 상태를 지정해 주기 위해서 생성자 개념을 사용한다. 각 언어마다 생성자를 지정하는 방법이 다양한데, VisualBasic 에서는 New 키워드로, Swift는 init 키워드로, Java와 C#같은 경우에는 클래스의 이름과 동일한 메서드로 생성자를 지정한다. 우리는 계속 사용해오던 Java를 사용하여 알아보록 하자. 상속 Slime 클래스의 생성자를 만들어보자. public class slime{ private int hp; private int ATK; private int DEF; public slime(){ // 반환값이 없다! this.hp = 500; this.ATK = 30; this.DEF = 10; } public void tackle() /* ..
목차 이름이 비슷비슷해서 공부할 때는 항상 헷갈렸던, 오버로딩과 오버라이딩을 설명해보겠다. 오버로딩(overloading) 오버로딩은 매개변수의 형식, 개수를 다르게 해서 메서드가 다양한 유형의 요청에 답할 수 있게 하는 것이다. 예를 들어서, 덧셈을 위한 메서드를 만들었다. public int sum(int A, int B); 이 메서드는 두 정수를 받아서 두 수의 합을 반환하게 되어있다. 그런데 사용자가 3개의 정수의 합을 구하고 싶다고 한다면 어떻게할까? 이런 경우, 아래와 같이 메서드를 새로 하나 더 만들면 된다. public int sum3(int A, int B, int C); 하지만, 사용자가 다시 실수의 합을 구하는 메서드를 요청한다면? 또 double형식의 함수를 하나 더 만들고, pub..