목록전체 글 (116)
while (1): study();

* 책 내용 요약이 아니니 유의하시기 바랍니다. 오차역전파에 대해서 이전에 해석 강의를 들은 적이 있긴 했는데, 솔직히 감이 잘 안 왔습니다. 이 책을 보고 나서야 비로소 '아! 이런거구나!'라고 제대로 와닿는 느낌이었습니다. 여러모로 읽으면 읽을수록 '읽기를 잘했다'라고 생각이 드는 책이네요. 이 책에서는 계산 그래프를 통해서 오차역전파에 대해 설명하고 있습니다. CS231n에서 설명한 방식을 차용했다고 하는데, 역시 인공지능 배우는 사람이라면 다 한번 거쳐야 하는 관문인걸까.. 싶습니다. 시간 날 때 꼭 봐야겠네요. 계산 그래프로 푸는 방법의 이점은 2가지입니다. 1. 국소적 계산: 단순한 계산에 집중하여 문제를 단순화 2. 중간 계산 결과 보관 3. 미분을 효율적으로 계산 기존 수치 미분 방법을 이..

* 책 내용 요약이 아니니 유의하시기 바랍니다. 신경망 학습 시에 '경사하강법'이라는 용어가 참 많이 나옵니다. 경사하강법이란 '손실함수가 각 가중치에 대해서 양의 기울기를 가지면 음의 방향으로, 음의 기울기를 가지면 양의 방향으로 업데이트시켜 결과적으로는 전역 최소해에 도달하게 만드는 방법'입니다. 일반적으로 다음과 같이 특정 지점의 기울기를 근사할 수 있습니다. 실제 기울기를 해석적으로 구하는 것은 컴퓨터에게 힘든 일이기 때문에, 우리는 수치 미분를 사용할 것입니다. 그중 아래와 같은 방식을 전방 차분이라고 합니다. 다만 전방 차분은 실제 해석적 기울기와는 차이가 좀 있는 편입니다. 따라서 신경망을 학습할 때는 오차를 줄이기 위해 중앙 차분을 사용합니다. 이렇게 구한 기울기는 각 장소에서 함수의 출력..

* 책 내용 요약이 아니니 유의하시기 바랍니다. 1. 소프트맥스 소프트맥스(Softmax) 함수의 지수연산은 값을 Overflow Error를 발생시킬 수 있기 때문에, 다음과 같이 지수가 너무 커지지 않도록 조정해주는 과정이 필요합니다. C라는 임의의 정수가 분모와 분자에 곱해졌을 때, 로그가 취해진 형태로 exp 안에 들어갈 수 있게 됩니다. 이때 logC를 C'라고 표기해봅시다. 즉 우리는 소프트맥스 함수의 분자, 분모의 exp 안에 어떤 수든 더할 수 있다는 것을 알게 되었습니다. 일반적으로 너무 큰 수가 되는 것을 막기 위함이기 때문에, C'는 배열의 최대값에 음수를 취한 값입니다. 이렇게 구한 소프트맥스 확률값 중 가장 큰 인덱스를 정답 라벨로 반환하기 때문에, 사실상 소프트맥스 연산은 출력층..

* 책 내용 요약이 아니니 유의하시기 바랍니다. 퍼셉트론은 딥러닝의 근간을 이루고 있는 중요한 아키텍처입니다. 마치 저항이 전류의 흐름을 조절하듯이, 각 노드의 가중치는 신호의 강도를 조절합니다. 이 신호가 임계치(Threshold)를 넘냐 마냐에 따라 퍼셉트론은 0 혹은 1의 값을 출력합니다. 이를 수식으로 표현하면 다음과 같습니다. 퍼셉트론 구조를 통해 주요한 논리연산자 중 AND, NAND, OR 관계를 표현할 수 있습니다. 1. AND 게이트 x1 x2 y 0 0 0 1 0 0 0 1 0 1 1 1 위 진리표를 조건으로 바꾸어보면 다음과 같습니다. 즉 다음 조건을 만족하는 모든 파라미터는 AND 게이트를 구성할 수 있습니다. 2. NAND 게이트 같은 방식으로 진리표를 조건식으로 치환하면 다음과 ..

출처: https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 삼성전자 공채 코딩테스트에 나왔던 기출문제입니다. 사실 이 문제를 풀었다는 것은 저에게 나름 뜻깊은 일입니다. 상반기 코딩테스트에서 좌절한 뒤, 처음 코딩테스트 알고리즘 공부를 시작했을 때 접했던 것이 이 문제입니다. 당시에는 정말 아무것도 몰랐기 때문에 '내가 정말 코딩테스트에 합격할 수 있을까?'라는 의문이 들 정도로 어렵게만 느껴졌습니다. 그러나 매일의 힘을 믿고 하루하루 정진..

출처: https://www.acmicpc.net/problem/3665 3665번: 최종 순위 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에 www.acmicpc.net 아이디어를 떠올리는 것에 상당히 애를 먹었던 문제일뿐만 아니라, 예외사항에 대해서 모두 고려해야 했던 쉽지 않았던 문제입니다. 다만 후술하겠지만 아이디어를 떠올린 이후에는 구현이 그다지 어렵지 않고, 채점 케이스도 허술하기 때문에.. 어려우면서도 쉬운(?) 문제였던 것 같습니다. 풀이 위상정렬 알고리즘을 사용하는 대표적인 문제로 '선수과목 문제'를 떠올려볼 수 있습니다. 이 문제는 ..

출처: https://www.acmicpc.net/problem/2887 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 무향그래프에 대해서 최소 신장트리를 구하는 문제이므로, 크루스칼 알고리즘을 적용하면 쉽게 풀 수 있습니다. 크루스칼 알고리즘: https://jcy1996.tistory.com/35 크루스칼 알고리즘(Kruskal Algorithm) 크루스칼 알고리즘에 대해 이해하기 위해서는 먼저 신장 트리(Spanning Tree)에 대해 이해할 필요가 있습니다. 신장 트..

문제 한 마을은 N개의 집과 M개듸 도로로 구성되어 있습니다. 각 집은 0번부터 N - 1번까지의 번호로 구분됩니다. 모든 도로에는 가로등이 구비되어 있는데, 특정한 도로의 가로등을 하루 동안 켜기 위한 비용은 해당 도로의 길이와 동일합니다. 예를 들어 2번 집과 3번 집 사이를 연결하는 길이가 7인 도로가 있다고 해봅시다. 하루 동안 이 가로등을 켜기 위한 비용은 7이 됩니다. 정부에서는 일부 가로등을 비활성화하되, 마을에 있는 임의의 두 집에 대하여 가로등이 켜진 도로만으로도 오갈 수 있도록 만들고자 합니다. 결과적으로 일부 가로등을 비활성화하여 최대한 많은 금액을 절약하고자 합니다. 마을의 집과 도로 정보가 주어졌을 때, 일부 가로등을 비활성화하여 절약할 수 있는 최대 금액을 출력하는 프로그램을 작..

1절. 관계형 데이터베이스 개요 1. 데이터베이스 - 특정 기업이나 조직, 개인이 필요에 따라 데이터를 일정한 형태로 저장해 놓은 것 Ex) Oracle, SyBase, Informix, DB2, Teradata, SQL server (STD ISO) - 기능 더보기 1) 정규화: 이상 제거, 중복 배제 2) 동시성: 다중 사용자 지원 3) 메타 데이터: 체계적 관리 4) 표준화: 데이터 품질 확보 5) 보안 6) 무결성 2. SQL 1) 데이터 조작어(DML) 더보기 SELECT INSERT UPDATE DELTE 2) 데이터 정의어(DDL) 더보기 CREATE ALTER RENAME DROP 3) 데이터 제어어(DCL) 더보기 GRANT REVOKE 4) 트랜잭션 제어어(TCL) 더보기 COMMIT ..

문제 공항에는 G개의 탑승구가 있으며, 각각의 탑승구는 1번부터 G번까지의 번호로 구분됩니다. 공항에는 P개의 비행기가 차례대로 도착할 예정이며, i번쨰 비행기를 1번부터 gi번째(1 ≤ gi ≤ G) 탑승구 중 하나에 영구적으로 도킹해야 합니다. 이때, 다른 비행기가 도킹하지 않은 탑승구에만 도킹할 수 있습니다. 또한 P개의 비행기를 순서대로 도킹하다가 만약에 어떠한 탑승구에도 도킹할 수 없는 비행기가 나오는 경우, 그 시점에서 공항의 운행을 중지합니다. 공항의 관리자는 최대한 많은 비행기를 공항에 도킹하고자 합니다. 비행기를 최대 몇 대 도킹할 수 있는지를 출력하는 프로그램을 작성하세요. 입력 조건 - 첫째 줄에는 탑승구의 수 G(1 ≤ G ≤ 100,0..