공부
-
[Machine Learning] Local Minima(Local Minimum) 의 존재확률적 관점공부/ML 2019. 11. 18. 18:01
머신러닝을 공부하고 다양한 예제를 작성하다 보면 몇몇 상황에서 원하지 않는 결과가 나오는 상황을 볼 수 있다. 이유야 다양하지만(learning step, data의 특성, 나의 실력) 이번에는 Local minimum에 대한 것을 살펴보자. (바쁜 당신을 위해 빠른 진행) 일반적으로 cost function을 최소화하기 위해서 열나게 모델을 작성한다. 위 같은 경우 크게 문제없이 최적의 값(w)을 찾아낼 수 있다. 심플하게 사람이 저기에서 걷는다고 했을 때, 아무 생각 없이 오르막길 나올 때까지 걸으면 끝이다. (우측 그림의 unregularized에 대해서는, 이 글에서 자세히 다루지 않지만, 데이터의 변수 간의 분포가 일정하지 않을 경우, 우측 그림과 같이 찌그러지게 되는데, 이 경우 oversho..
-
[Machine Learning] cost function - 왜 제곱을 사용하는 것일까?공부/ML 2019. 10. 23. 17:51
머신러닝을 공부하다 보면 COST 함수에 대한 내용을 접하게 된다. INPUT 값에 대한 기댓값으로 얼마가 나오겠지...라는 예측과 차이의 정도를 반환하는 함수로, 이 값이 작으면 작을수록 정확하게 예측했다고 판단할 수 있다. 식을 보게 되면 예측값 [ x(i) ], 정답 [ y(i) ] 의 값의 차이를 제곱하고 있는 것을 확인할 수 있다. 이에 대해서 "예측값과 정답의 차이가 크다면 더욱 더 weight를 가해서 좀 더 정확한 modeling을 하기 위해서 제곱 값을 적용한다."라고 흔히들 많이 설명한다. 맞는 말이다. 하지만... 왜 하필 제곱을 사용하는 것일까? 예측값과 다른 것이 문제가 되어서 사용한다면 왜 3 제곱, 4 제곱... 100 제곱을 사용하면 되는 게 아닐까? 그럼 더 정확해지지 않을..
-
[C++] OpenCV - RAW이미지 읽기공부/C++ 2019. 10. 22. 17:57
OpenCV의 경우 IMREAD를 통해 이미지를 MAT에 반환하여 출력을 하는데, RAW 이미지의 경우 지원을 하지 않는다. 따라서 별도의 FREAD로 얻은 값을 FILE에 넣어준 뒤, 이를 CHAR [][]에 넣은 후, MAT을 사용하면 된다. FILE * file1 = fopen("lena(512x512).raw", "rb"); //파일명으로 오픈 fread(arr1, 512 * 512, 1, file1); // 이미지 사이즈만큼 할당하여 arr1에 저장 Mat before1(512, 512, CV_8UC1, arr1); //arr1을 Mat에 row,col,type,array 순으로 값을 넣어준다. imshow("111", before1);
-
Programmers [기지국 설치]공부/programmers 문제 2019. 10. 1. 11:32
#include #include using namespace std; int solution(int n, vector stations, int w) { int head = 0, tail = 0, answer = 0; int cur, val; for (int i = 0; i =head && tail!=0) { val = tail - head + 1; if ((val % (2 * w + 1)) == 0) val = (val / (2 * w + 1)); else val = (val / (2 * w + 1)) + 1; answer += val; } head = cur + w + 1..
-
Programmers [섬 연결하기] - 분명 Prim's algorithm...? 을 짰는데..공부/programmers 문제 2019. 10. 1. 11:25
#include #include #include #include #include using namespace std; int arr[100][100]; int visit[100]; priority_queue q; int solution(int n, vector costs) { int answer = 0, cur, s = costs.size(); bool flag = false, skip = false; pair temp; if (n == 1){return 0;} for (int i = 0; i < s; i++) { arr[costs[i][0]][costs[i][1]] = costs[i][2]; arr[costs[i][1]][costs[i][0]] = costs[i][2]; } cur = costs[0][..
-
백준 - 계단 오르기 [2579]공부/baekjoon 문제 2019. 9. 4. 09:45
#include #include using namespace std; int main() { int n; int arr[300]; int s1[300]; int s2[300]; cin >> n; for (int i = 1; i > arr[i]; s1[n] = arr[n]; s2[n] = arr[n]; s1[n-1] = -3000000; s2[n-1] = arr[n-1] + arr[n]; for (int i = n-2; i > 1; i--) { s1[i] = arr[i] + s2[i + 2]; s2[i] = arr[i] + max(s1[i+1],s2[i+2]); } s1[1] = arr[1] + max(s1[2],s2[3]); cout
-
음수는 %연산자가 어떻게 동작할까?공부/C++ 2019. 8. 29. 19:15
이 글은 짝수 홀수를 구분하려고 코드를 간단히 짜다가 생각지 못한 일이 발생하여 쓰게 되었다. 홀수 짝수 구분을 하라고 하면 간단하게 num % 2 를 통해서 나머지 연산하고 이게 1이면 홀수고 0이면 짝수겠지... 하고 작성을 했지만, 문제의 test set에는 음수도 존재하였다. 사실 음수를 생각하지도 못한 나도 문제지만, 생각을 하고서도 왜 문제가 생기는지 바로 모르는게 더 문제... 또 음수로 수를 나눈다면 어떻게될까? 막상 컴퓨터가 나눗셈을 어떻게 하는지, 연산을 어떻게 하는지 와 같은 내용을 배워놓고서는 다 말아먹어버린 내 두뇌에 다시한번 감탄의 박수를 보낸다. 서론이 길었으니 간단하게 결과만 적어두자. a%b 1. 나눗셈을 할 때 음수 양수를 고려하지 않고, a,b 모두 양수로 사용하여 나머..