목록전체 글 (44)
거북목개발자

오류가 있을수도 있으며 댓글로 남겨주시면 바로 수정하겠습니다 ^.^ 참고한 문서는 https://youtu.be/BS6O0zOGX4E 과 대학교 강의시간에 배운 내용을 바탕으로 작성하였습니다. 학습(델타룰) : 정답과 출력을 비교하여 그 차이를 가중치 조정에 반영 Activation Function (활성 함수) : 값을 0과 1로 바꿔줌 (신경망의 출력을 결정) 1. linear function ex) y = Wx + b W를 찾는 법 (cost function을 활용해 gradient descent 사용) 2. non-linear function -> 비선형 함수를 사용하는 이유는 딥러닝 모델의 레이어 층을 깊게 가져갈 수 있기 때문 sigmoid (0과 1사이의 값이 나옴) tanh ReLU Cos..

오류가 있을수도 있으며 댓글로 남겨주시면 바로 수정하겠습니다 ^.^ 참고한 문서는 https://youtu.be/BS6O0zOGX4E 과 대학교 강의시간에 배운 내용을 바탕으로 작성하였습니다. - learning with labeled examples - 이미지 라벨링, 이메일 스팸 필터, 성적 예측 ... - ex) 개, 고양이 분류 모델 Regression ex) 시험 성적 예측(0~100점) Binary Classification ex) 시험에서 pass / non-pass (둘 중에 하나 예측) Multi-label Classification ex) 시험에서 (A, B, C, E and F) (여러가지 종류 중 예측) -> input data로 discrete한 값을 예측하면 Classificat..
탐욕 알고리즘 : 동적 계획법과 마찬가지로 최적화 문제의 답을 얻기 위해 사용한다. 각 단계의 부분 문제를 풀 때 근시안적으로 최적해를 구한다고 해서 붙여졌다. -> 항상 최적의 결과를 보장하지는 못한다!!! 동적 계획법은 최적의 해를 구하긴 하지만 탐욕 알고리즘보다는 덜 효율적(대게 더 많은 수행 시간을 요구합니다) 입니다. 반면에 탐욕 알고리즘은 동적 계획법보다 효율적이긴 하지만 동적 계획법처럼 반드시 최적의 해를 구해준다는 보장은 하지 못한다. 최적의 해가 나오기를 바랄뿐이다. 탐욕 알고리즘으로 풀 수 있는 문제는, 동적 계획법처럼 대상 문제가 최적 부분 구조를 갖고 있어야한다. 1) 해 선택 : 현재 상태에서 부분 문제의 최적해를 구한 뒤, 이를 부분해 집합에 추가한다. 2)..
동적 계획법 : 동적으로 변화하는 결정을 만드는 방법 1)분할 정복은 문제를 위에서부터 아래로 쪼개지만(Top-Down), 동적 계획법은 제일 작은 부분 문제부터 상위에 있는 문제로 풀어 올라간다(Bottom Up) 2)분할 정복 기법으로 쪼갠 각 단계에 있는 부분 문제들은 그 이전 단계에 있는 문제들의 답에 의존한다. 동적 계획법은 분할 정복과 달리 한번 푼 적이 있는 부분 문제의 답은 다시 푸는일이 없도록 테이블 등에 저장해 놓는다. 동적 프로그래밍으로 알고리즘을 설계할 때 부분 문제의 답을 저장해 놓는 테이블을 빼놓으면 안된다. 이 테이블이 없으면 부분 문제들의 답을 수없이 반복해서 다시 구하는 일이 생길 수도 있기 때문이다. 1) 문제를 부분 문제로 나눈다. 2) 가장 작은 부분 문제부터 해를 구..
분할 정복 알고리즘 : 문제를 더 이상 나눌 수 없을 때까지 나누고, 이렇게 나누어진 문제들을 각각 풂으로써 결국 전체 문제의 답을 얻는 알고리즘 ex) 퀵 정렬 -> 임의의 기준 요소(pivot)을 정하고 기준 요소보다 작은 요소들을 왼편으로, 큰 요소들은 오른편으로 옮긴다. 그 다음에 기준 요소에 의해 나누어진 양 편에 있는 요소들에 대해 왼쪽/오른쪽에 대하여 각각 분할을 수행한다. 그리고 이렇게 분할된 데이터 집합들을 더 이상 분할 할 수 없을 때까지 계속해서 분할한다. 더 이상 분할 할 수 없을 때는 이미 정렬이 끝난 경우 이다. 핵심 : 문제를 잘게 쪼개기 1. 분할(Divide) : 문제가 분할이 가능한 경우, 2개 이상의 하위 문제로 나눈다. 2. 정복(Conquer) : 하위 문제가 여전히..
2. Shortest Path : 그래프 내의 한 정점에서 다른 정점으로 이동할 때 가중치 합이 최소값이 되게 만드는 경로를 찾는 알고리즘 - Dijkstra Algorithm : Prim Algorithm과 동작 방식이 상당히 비슷하다. 다만 Prim Algorithm이 단순히 간선의 길이를 이용해 어떤 간선을 먼저 연결할지를 결정하는데 반해, 다익스트라 알고리즘은 '경로의 길이'를 감안해서 간선을 연결한다는 점이 다르다. : 사이클이 없는 방향성 그래프에 한해서만 사용할 수 있다. 1) 각 정점 위에 시작점으로부터 자신에게 이르는 경로의 길이를 저장할 곳을 준비하고 모든 정점 위에 있는 경로의 길이를 무한대로 초기화 합니다. 2) 시작 정점의 경로 길이를 0으로 초기화하고 (시작 정점에서 시작 정점까..

https://www.acmicpc.net/problem/8393 8393번: 합 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net 입력을 통해 숫자 n을 입력 받으면 0부터 n까지의 합을 출력하는 것이다. 내가 만든 코드 n = 3 출력 = 6 (1+2+3 = 6) range(n)은 0부터 n-1까지의 수를 구해주므로 n+1 했다. 다른 사람이 만든 더 좋은 코드 sum() 함수 안에서 range() 함수를 사용했고 range() 함수 안에서 바로 int(input())을 사용했다. range() 함수는 연속적인 숫자 객체를 만들어 반환해주는 함수이다. 따라서 sum(range(n))이 작동하는 것이다.

https://www.acmicpc.net/problem/1271 1271번: 엄청난 부자2 첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 101000, m과 n은 10진수 정수) www.acmicpc.net python에서 / 연산자와 // 연산자의 차이는 무엇일까? / 연산자 나누기 연산으로 딱 떨어지지 않는 경우 소수점 아래 최대 15자리까지 구해준다. python3 에서 / 연산자는 실수 값을 반환한다. // 연산자 나누기 연산으로 소수점 자리는 버리고 정수 값만 반환한다. 문제에 대해서 조사하다가 안 사실 python은 큰 수를 자동으로 처리해주기 때문에 이 문제는 다른 언어보다 python으로 푸는 것이 효과적이다. 하지만 pyth..