젝무의 개발새발
[ML/DL 스터디] <Optimization - 1> Optimization, Convex Optimization
Referencehttps://iai.postech.ac.kr/teaching/machine-learninghttps://iai.postech.ac.kr/teaching/deep-learning위 링크의 강의 내용에 기반하여 중요하거나 이해가 어려웠던 부분들을 정리하여 작성하였고,모든 강의 슬라이드의 인용은 저작권자의 허가를 받았습니다.또한, 모든 내용은 아래 Notion에서 더 편하게 확인하실 수 있습니다.>>노션 링크 Key Point:** 결국 Convex Optimization이 중요한 이유는, local한 minimum(optimal solution)이 global한 minimum이기 때문. OptimizationOptimization 문제는 이러한 수학적 모델로 정의할 수 있음.⇒ f(x)라는..
[ML/DL 스터디] <Linear Algebra - 2> Least Square Solution, Orthogonal Projection
Referencehttps://iai.postech.ac.kr/teaching/machine-learninghttps://iai.postech.ac.kr/teaching/deep-learning위 링크의 강의 내용에 기반하여 중요하거나 이해가 어려웠던 부분들을 정리하여 작성하였고,모든 강의 슬라이드의 인용은 저작권자의 허가를 받았습니다.또한, 모든 내용은 아래 Notion에서 더 편하게 확인하실 수 있습니다.>>노션 링크 Least Square Solution위와 같이 선형연립방정식 꼴에서,unknown(변수)의 개수보다 constraint(방정식)의 개수가 더 많다면⇒ matrix A의 꼴은 skinny하고, 이 때 일반적으로 solution이 존재하지 않음(해가 없다.) 이 때 column vecto..
[백준] 13703. 물벼룩의 생존확률 - Python
[Gold V] https://www.acmicpc.net/problem/13703 풀이재귀와 DP를 이용해 쉽게 풀이할 수 있는 문제. loc(location, 물벼룩의 위치)가 0이 되면, 2에 남은 시간만큼의 제곱을 해 준다. (그만큼의 확률을 가져가므로)(line 9)memoization을 이용하지 않고 재귀로만 풀이하면 시간초과가 난다. AC.k, n = map(int, input().split())dp = [[-1]*200 for _ in range(200)]def swim(sec: int, loc: int): if dp[sec][loc] != -1: return dp[sec][loc] if loc == 0: dp[sec][loc] = 2**sec ..
[ML/DL 스터디] <Linear Algebra - 1> EigenVector(고유벡터), EigenValue(고윳값)의 의미
Eigenvector, Eigenvalue 계산법아래의 식에서,
[도서 리뷰] <랭체인으로 LLM 기반의 AI 서비스 개발하기>
한줄평바야흐로 LLM 시대. AI 지식이 전무한 AI 유아들을 위해, 깔끔하게 포장된 유기농 이유식을 떠먹여주는 친절함. 도서 정보제목: 랭체인으로 LLM 기반의 AI 서비스 개발하기출판사: 길벗출판사지은이: 서지영대상 독자: 인공지능 or 개발에 대한 지식은 없으나, LLM을 이용한 서비스(ex. 챗봇)을 만들고 싶은 사람가격: 정가 24,000원.예제 코드: https://github.com/gilbutITbook/080413 목차1장 LLM 훑어보기2장 LLM 활용하기 3장 RAG 훑어보기4장 랭체인 익숙해지기5장 랭체인으로 RAG 구현하기6장 LLM을 이용한 서비스 알아보기부록 코랩 사용법자세한 목차는 링크 참고.https://product.kyobobook.co.kr/detail/S0002125..
MSE(Mean Squared Error)를 왜 2로 나눌까
머신러닝을 공부하며 든 궁금증. cost function (loss function)으로 이용하는 MSE라는 것을 보자마자 궁금해졌다. 분명 평균 제곱 오차 (Mean Squared Error) 라고 했는데, 왜 데이터의 개수(n) 이 아니라, 2n으로 나누는 건가? 읽던 책에도 그 이유가 나와 있지 않았고, 강의 교안에도 딱히 그에 대한 언급은 없었다. 결론은 Gradient Descent (경사하강법)을 적용하는 과정에서 미분값을 구하게 되는데, 제곱을 미분하면 2가 생기니까 식이 깔끔해지도록 이를 상쇄시켜 주기 위함이라는 것. 어짜피 cost function을 최소화하는 것에 관심이 있는 것이지, cost function의 값이 정확히 무엇인지는 크게 상관 없기 때문에, 미분식을 더 깔끔하게 만드..
[백준] 1562. 계단 수 - Python
[Gold I] https://www.acmicpc.net/problem/1562 1562번: 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 비트마스킹을 이용한 DP 문제. 기본적인 아이디어는 2차원 DP를 생각하면 쉽게 떠올릴 수 있는데, dp[N][i] 일 때, dp[N][i] = dp[N-1][i-1] + dp[N-1][i+1] 과 같은 점화식(i==0, i==9 예외) 으로 풀이할 수 있다. 다만 위의 경우는 0부터 9까지 숫자가 모두 등장하는 계단 수 라는 조건을 무시했을 때의 풀이법. 이 문제는 위 조건을 만족하는 수의 개수만을 구해야 하므로, 기존 풀이를 응용하여 풀이할 수 있다. 기존 2차원 배열이 아닌, 3차원 배열로 선..
[백준] 13460. 구슬 탈출 2 - Python
[Gold I] https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 풀이 조금 복잡했던 BFS 시뮬레이션 문제. 이동 시 빨간 구슬과 파란 구슬이 겹쳤을 때, 각각의 이동 횟수를 계산하여 처리하는 방식이 키포인트. BFS의 visited 처리는 빨간 구슬과 파란 구슬의 좌표를 이용한다. 몇 번째 이동인 지는 visited로 확인할 필요 없음. 자세한 풀이는 코드의 주석을 참고하여 확인하면 쉽게 이해..