목록컴퓨터과학 (45)
MG

메일을 받았을 때 이를 스팸, 비스팸 메일로 구분하는 모델을 생각해보자. 우선 feature을 정해야 하는데 이메일 안에 담긴 단어의 여부를 파악한다. 예를 들어 deal, buy, discount 등등 스팸메일에서 자주 보이는 단어가 등장하면 스팸메일로 분류하는 식이다. 실제로 훈련을 할 때는 수동적으로 단어 100개를 뽑기보단 training set에서 자주 나타나는 10000 ~ 50000 개의 단어를 선택한다. 모델이 더 작은 오류를 갖게 하기 위해서는 아래의 방법들을 사용하면 된다. - 데이터를 많이 모은다. - email header에 기반해 더 정교한 특징을 가진 알고리즘으로 개선한다. - email body에 기반해 더 정교한 특징을 가진 알고리즘으로 개선한다. (ex. 단어의 미세한 차이..

train error와 cross validation(cv) error의 차이를 확인하고 모델의 문제를 확인하고 싶을 때 사용하는 지표가 bias와 variance이다. 왼쪽 상황과 같이 underfit된 상황을 high bias를 갖고 있다고 하고 오른쪽과 같이 overfit된 상황을 high variance를 갖고 있다고 말한다. 그리고 그 중간 상황을 우리가 원하는 정상적인 예측값이다. train error 값과 cv error값이 주어졌을 때 어떤 문제 상황인지 알고 이에 대처하기 위해서는 두 값을 비교해보면 알 수 있다. 위 그래프는 degree of polynomial d값을 x축으로 삼아 두 error값을 나타낸 그래프이다. 위 그림에서 왼쪽과 같이 cv error와 train error가 ..

이번 챕터에서는 우리가 regularized linear regression을 이용해 문제를 예측할 때 이를 보충하기 위한 방법에 대해서 알아볼 것이다. 예를 들어 training set의 크기, 특징의 종류, lambda의 크기 등등을 조절해 볼 수 있다. 그리고 모델에 대해 어떻게 결과가 나오는지 어떤 부분에 문제가 있는지 진단하는 법을 알아볼 예정이다. 우선 진단하는 법부터 알아보자면 dataset을 만약 training set으로만 이용한다면 새로운 데이터가 들어왔을때 overfitting 문제가 일어나는 등 일반화를 제대로 하기 힘들 것이다. 그렇기에 dataset 중 일부, 여기서는 30%의 set을 test set으로 지정해 따로 테스트 해본다. 그렇게 하면 이 모델이 정확한지 아닌지 판단할..
https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 서로 이웃한 집과 같은 색이 아니면 된다. 그래서 n개의 집을 3가지 색으로 칠하는 dp[n][3]를 정의한다. 이를 0부터 n - 1까지 그리고 RGB 순으로 반복을 돌린다. k번째 집을 RGB 3종류로 칠한다고 각각 가정하고 이와 다른 색들로 칠해진 k - 1번째 집들 중 최소를 찾아 그 집을 칠할 때 드는 비용과 더해준다. 그리고 마지막에 최소값을 찾아 출력한다. #in..
https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 다음 수를 더하고 빼는 경우의 수를 계속 세나가야 하는 DP 문제이다. dp[i][j]는 i번째 수까지 계산에 넣었을 때 그 합이 j가 되는 경우의 수이다. n번째 수를 계산에 넣기 전에 dp[n-1]를 0부터 20까지 돌려 n번째 수를 더하거나 뺐을 떄 0 이상 20 이하이면 경우의 수를 더해주면 된다. #include #define MAX 101 using namespace std; l..

이번 강의에서는 NN을 직접 돌릴때 그 과정이 어떻게 되는지와 컴퓨터 프로그래밍을 위한 몇 가지 방법을 알아볼 것이다. 우선 Unrolling parmeters이다. 이는 theta가 더 이상 vector가 아니고 matrix가 되었는데 이를 함수에 넣기 위해 하나의 벡터로 만들어야 한다. 그 때 이를 사용하여 theta1, 2, 3를 하나의 theta로 즉 matrix vector를 만들게 된다. J함수와 J의 편미분함수인 D 또한 마찬가지이다. 우리는 BP를 진행시키며 cost function이 제대로 줄어들고 있는지 갱신은 제대로 되는지 확인하여야 한다. 하지만 NN 특성상 변수가 너무 많고 계산이 어디서부터 틀렸는지 알기가 힘들다. 그렇기에 미분 정의를 활용해 J함수의 편미분함수인 D와 매우 작은..

NN의 cost function은 logistic regression과 유사한 모양을 하고 있다. 하지만 그 연산 수에서 차이가 보이는데 그 전에 알아야 할 변수는 L : 총 layer의 개수, s_l : layer l의 unit 개수, K : output의 개수 이다. 그렇게 보면 logistic regression에서 layer와 output 개수만큼 더한 것이라 볼 수 있다. 우린 이 cost function을 최소화하기 위해 back propagation이라는 방법을 사용한다. 이는 logistic regression에서의 gradient descent와 유사한 역할을 하게 된다. 그렇게 하기 위해 우린 J함수와 J함수의 theta에 대한 편미분이 필요하다. 우린 위에서 J함수, 즉 cost fu..
https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 이 문제의 요점은 같은 파티에 한 번이라도 속한 사람은 전부 통한다는 것이다. 예를 들어 1번이 진실을 알고 있고 2번이 한번이라도 1번과 같은 파티에 참석했으면 순서에 상관없이 다른 파티에서는 2번은 진실을 아는 사람처럼 행동하게 된다. 그렇기에 이 문제는 한 번이라도 같은 파티에 참석해봤냐 안 해봤냐 나누는 문제로 Union-Find 알고리즘을 사용하면 된다. 더 자세히 말하자면 각 파티당 참여하는 인원..