전체 글

computational graph는 머신 러닝에서 일반적으로 사용되는 방법으로, 복잡한 함수를 그래프 형태로 표현하는 데 사용된다. Computational graph를 사용하면 어떤 함수든지 그래프 형태로 표현할 수 있으며, 이 그래프의 각 노드는 연산 단계를 나타낸다. 제시된 예제에서는 입력 변수로 x와 W를 가지는 선형 분류기를 설명한다. 곱셈 노드는 행렬 곱셈을 나타내며, 파라미터 W와 데이터 x의 곱셈은 점수 벡터(score vector)를 출력한다. Computational graph를 사용하면 backpropagation이라는 기술을 사용할 수 있다. Backpropagation은 gradient를 얻기 위해 computational graph 내의 모든 변수에 대해 chain rule을 ..
·Deep Learning
Loss Functions 예측 함수 f(x,W) = Wx 왼쪽 숫자들은 임의의 행렬 W를 가지고 예측한 클래스 스코어이다. 고양이 샘플 데이터에서 cat score는 3.2로 car score 5.1보다 낮고, 개구리 샘플 데이터에서 frog score는 -3.1로 cat과 car에 대한 score보다 낮은 값을 갖고 있다. 우리는 정답 클래스가 해당 데이터에서 가장 높은 점수가 되는 분류기를 원하기 때문에 해당 분류기가 성능이 별로 좋지 않다는 것을 알 수 있다. 하지만 스코어를 눈으로 보며 분류기의 성능을 평가하는 것은 좋은 방법이 아니다. 문제를 해결할 알고리즘을 만들고, 어떤 W가 가장 좋은지 결정하기 위해서는 W가 좋은지 나쁜지를 정량화 할 방법이 필요하다! 손실함수는 W를 입력받아 각 스코어..
·Deep Learning
Image Classificaiton은 컴퓨터가 입력받은 이미지를 보고 어떤 카테고리에 속할지 고르는 작업니다. 시스템에는 개, 고양이, 트럭, 비행기 등 미리 정해져 있는 카테고리 집합이 있다. 컴퓨터에게 이미지는 아주 큰 격자 모양의 숫자 집합에 해당한다. 각 픽셀은 rgb값을 의미하는 세 개의 숫자로 표현된다. 이러한 거대한 숫자 집합에서 고양이를 인식하는 것은 상당히 어려운 일이며, 이것을 바로 의미론적인 차이(semantic gap )라고 한다. 고양이라는 레이블은 우리가 이 이미지에 붙힌 의미상의 레이블이다. 이미지가 고양이 사진이라는 사실과 컴퓨터가 보는 픽셀값과에는 큰 차이가 있다. 이미지에 아주 미묘한 변화만 주더라도, 카메라를 아주 조금만 옆으로 옮겨도 모든 픽셀값은 변하지만 고양이라는..
·Deep Learning
생물학적 비전 진화의 빅뱅(543 million years B.C.) 지구 대부분은 물로 이루어져 있고 바다를 부유하는 일부 생물들만 존재했다. 생물들에게 눈(eyes)이 존재하지 않았다. 그러나 어떤 기점 이후로 천만 년이라는 아주 짧은 시기 동안에 생물의 종 수가 폭발적으로 증가했다. Andrew Parker는 비전(시각)의 탄생이 폭발적인 종 분화의 시기를 촉발했다고 주장한다. 생물들은 시각을 활용해 더 능동적으로 활동하며 빠르게 진화했을 것으로 추정된다. 이후 비전은 거의 모든 동물, 특히 지능을 가진 동물의 가장 큰 감각체계로 발전한다. 비전은 인간의 가장 큰 감각체계이며, 대뇌피질의 50% 가량의 뉴런이 시각 처리에 관여한다. 전기생리학을 이용한 Hubel과 Wiesel의 연구 생물학자들은 비..
·Deep Learning
Pytorch Basic Tensor Manipulation Numpy와 유사한 부분이 많음 Vector, Matrix and Tensor 1차원으로 이루어지는 값 - Vector(벡터), 1D Tensor 2차원으로 이루어지는 값 - Matrix(행렬), 2D Tensor 3차원으로 이루어지는 값 - (3D) Tensor 2D Tensor (Typical Simple Setting) |t|=(batch size, dim) batch size * dimension의 사이즈를 갖고있다. 보통 (64,256) 3D Tensor(Typical Computer Vision) |t|=(batch size, width, height) pytorch는 세로, 가로, 깊이의 값이 순차적으로 들어간다 3D Tensor(..
·Algorithm
문제 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다. (1)이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다. 이와 같이 종이를 잘랐을 때, -1로만 채워진 종이의 개수, 0으로만 채워진 종이의 개수, 1로만 채워진 종이의 개수를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 37, N은 3k 꼴)이 주어진다. 다음 N개의 줄에는 N개의 정수로 행렬이 주어진다. 출력 첫째 줄에 -1로만 채워진 종이의 개수를, 둘째 줄에 0으로만 ..
·Algorithm
- 정의와 성질 - 연결 리스트, 링크드 리스트(linked list)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다. 연결 리스트의 종류로는 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트가 있다. 이중 연결 리스트는 단일 연결 리스트와 달리 주어진 원소의 이전 원소를 알 수 있다. 다만 원소가 갖고 있어야 할 정보가 1개 더 많아져서 메모리를 더 많이 차지하게 된다. 원형 연결 리스트는 원소의 처음과 끝이 연결되어 있는 리스트이다. 배열과 달리 연결 리스트는 다음 원소의 주소 값 또는 이전 원소의 주소 값을 갖..
·Algorithm
- 배열의 정의 - 배열을 선언한 뒤에 배열의 길이를 변경하는 게 불가능하지만, 자료구조로써의 배열에서는 길이를 마음대로 늘리거나 줄일 수 있다고 가정하자. - 배열의 성질 - 1) 배열은 메모리 상에 원소를 연속하게 배치한 자료구조이기 때문에 k번째 원소의 위치를 바로 계산할 수 있다. k번만큼 이동하면 되기 때문에 시간복잡도 O(1) 2) 다른 자료구조들과 다르게 추가적으로 소모되는 메모리 양이 거의 없다. 3) 메모리 상에 데이터들이 붙어있기 때문에 Cache hit rate가 높다. 4) 메모리 상에 연속한 구간을 잡아야 하기 때문에 할당에 제약이 걸린다. - 배열의 기능(시간복잡도) - -배열을 특정 값으로 초기화시키는 방법- 1) cstring의 memset 함수는 memset(포인터(배열의 ..
·Review
이 책을 읽은 이유 미술은 항상 나한테 어렵고 두려운 분야였다! 관련 지식이 별로 없다 보니까 미술 관련 전시회를 가는 것도 별로 좋아하지 않는다. 도슨트가 있으면 그나마 괜찮지만 그래도 한 번도 재밌다고 생각이 든 적은 없던 것 같다. 작가나 작품에 대한 정보가 없으니까 시각적인 부분으로만 감상할 수밖에 없는데, 사실 난 봐도 잘 모르겠더라..^^ 이런 미술에 대한 벽을 언젠가는 깨고 싶었고, 일단 쉬운 책으로 다가가고 싶어 사람들이 미술 입문서로 많이 추천하는 이 책을 고르게 됐다. 책에 대한 나의 감상 책을 읽으면서 나는 미술 관련 지식만 부족한 게 아니라 예술에 대한 감수성도 별로 없는 게 아닌가 생각하게 됐다..ㅎ 이 책에 나와있는 많은 예술가들은 자신의 고통을 그림으로 승화시키고, 사람들은 그..
수달토끼
수달토끼의 개발일기