일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- study book
- fastapi를 사용한 파이썬 웹 개발
- pytorch
- Widget
- Stream
- MDP
- FastAPI
- Flutter
- system hacking
- 영상처리
- Algorithm
- Kaggle
- PCA
- bloc
- Dreamhack
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- ARM
- ML
- rao
- Computer Architecture
- C++
- BAEKJOON
- DART
- Image Processing
- Got
- MATLAB
- llm을 활용 단어장 앱 개발일지
- 백준
- BFS
- BOF
- Today
- Total
목록All (309)
Bull

확률분포와 이항분포의 정의 확률분포 확률분포는 이산확률분포와 연속확률분포로 나뉩니다. 여기서 이항분포는 이산확률분포를 따르니 이산확률분포를 설명하겠습니다. 이산확률분포는 확률 변수 X의 치역이 셀 수 있는 집합인 경우의 확률변수 X를 나타낸 함수입니다. 즉, 모든 확률 변수가 특정한 값을 가질 확률을 나타내는 함수입니다. 이항분포 이항분포는 성공률이 p인 n회의 베르누이 시행에서 성공횟수를 X라 할 때, 확률변수 X의 확률분포입니다. 이항분포는 이산확률분포 중에서 발생결과가 오직 2가지 뿐인 베르누이 시행을 적용한 이산확률분포라고 생각할 수 있습니다. 따라서 이산확률분포의 평균과 분산의 공식을 통해 이항분포의 공식을 유도할 수 있습니다. 이항분포의 평균 증명 확률분포에서 평균은 다음과 같습니다. $E(X..

Shell Code란? 셸코드(Shellcode)는 공격자가 취약한 소프트웨어를 이용해 임의의 코드를 실행하기 위해 사용하는 바이트 코드이다. "셸"이라는 용어는 이 코드가 종종 공격자에게 시스템의 셸에 접근을 제공하기 때문에 붙여졌다. 즉, 공격자는 셸코드를 사용해 시스템에 명령을 내릴 수 있는 권한을 얻는다. 셸코드는 다음과 같이 나타낼 수 있다. \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 실행파일에서 호출할 수 있는 부분을 조작할 수 있다면 임의의 셸코드를 넣어서 공격할 수 있다. 셸코드를 직접 만들기 전 프로그램이 어떻게 돌아가는 지 알아 볼 것이다. sysca..

이 포스팅은 학교수업과 노승은 저자의 "바닥부터 배우는 강화 학습"을 바탕으로 정리하였고 저자의 책에 나오는 TD 예제에서 n-step TD를 구현해보았다. 소스코드 class GridWorld: def __init__(self): self.x = 0 self.y = 0 def step(self, a): if a == 0: self.move_left() elif a == 1: self.move_up() elif a == 2: self.move_right() elif a == 3: self.move_down() reward = -1 done = self.is_done() return (self.x, self.y), reward, done def move_right(self): self.y += 1 if s..

스니펫 설정 방법 1. Command Palette 열기: Ctrl+Shift+P 또는 Cmd+Shift+P (macOS)를 누른다. 2. Preferences: Configure User Snippets를 검색하고 선택한다. 3. cpp.json (C++ 스니펫 파일)을 찾아 선택한다. 만약 C++용 스니펫 파일이 없다면, New Global Snippets file을 선택하고 파일 이름을 지정하여 새로 만든다. 4. 열린 JSON 파일에 아래의 스니펫을 추가한다. cpp.json { "C++ Basic Template": { "prefix": "ct", "body": [ "#include ", "", "using namespace std;", "", "void init(){", " cin.tie(NU..

이 포스팅은 학교수업과 노승은 저자의 "바닥부터 배우는 강화 학습"을 바탕으로 정리했다. 학교 수업또한 저자 책을 바탕으로 수업을 받기 때문에 강의자료(요약에 가까운)와 책을 보며 정리했다. 밸류 평가하기 - 반복적 정책 평가 에피소드마다 밸류를 평가해주면서 정책을 업데이트 해준다. 지속적인 업데이트를 하여 실제 값에 가까워진다. 벨만 기대 방정식을 사용하여 예시를 들어보겠다. 기대 방정식과 최적 방정식의 차이는 * 유무를 확인하면된다. (*있는 게 최적 방정식) 그리드 월드의 MDP 정보 • 모든 상태 𝑠에서의 보상: $r^a_s = −1$ • 모든 상태 𝑠에서의 전이 확률: $𝑃^a_{𝑠𝑠′}= 1.0$ • 감쇠 인자: $γ = 1$ • 정책 : 4방향 랜덤 $v_π(s) = \sum_{a∈A} π(..

이 포스팅은 학교수업과 노승은 저자의 "바닥부터 배우는 강화 학습"을 바탕으로 정리했다. 학교 수업또한 저자 책을 바탕으로 수업을 받기 때문에 강의자료(요약에 가까운)와 책을 보며 정리했다. 개념 벨만 방정식은 MDP를 수식적으로 쉽게 이해하기 위해 접근한 방정식이다. 또한 밸류를 구할 때 벨만 방정식을 사용해야 한다. 분류는 벨만 기대 방정식, 벨만 최적 방정식 두 가지로 나뉜다. 벨만 기대 방정식 책에서는 벨만 방정식을 단계별로 설명했다. 0단계 $v_π(S_t) = E_π[G_t|S_t]$ $=E_π[R_{t+1} + γR_{t+2} + γ^2R_{t+3} + ···|S_t]$ $= E_π[R_{t+1} + γ(R_{t+2} + γR_{t+3} + ···)|S_t]$ $= E_π[R_{t+1} + ..

이 포스팅은 학교수업과 노승은 저자의 "바닥부터 배우는 강화 학습"을 바탕으로 정리했다. 학교 수업또한 저자 책을 바탕으로 수업을 받기 때문에 강의자료(요약에 가까운)와 책을 보며 정리했다. 개념 MDP는 마르코프 결정 프로세스의 약자로 의사결정 과정을 모델링하는 수학적인 틀을 제공한다. MDP의 Agent와 Reward를 통하여 마지막에 가장 큰 보상을 위한 상태를 찾아나선다. 우선 MDP를 알기위해 MP와 MRP에 대해 설명하겠다. MP (Markov Process) $$MP ≡ (S, P)$$ flow chart를 좀 형편없이 그린 감이 없지않아 있지만... 설명하자면 시작부터 도착까지 확률 P만 존재할 때 위의 그림과 같이 표현할 수 있다. 여기서 P를 전이확률이라고 하며, 이 전이확률을 행렬로 ..

개념 히스토그램 평활화는 이미지의 히스토그램에서 너무 치우쳐진 부분을 평활하게 만들어 주는 기법이다. 즉, 위의 그림과 같이 빈도 수가 높은 부분은 낮게, 낮은 부분은 높게 하여 동등하게 만들어준다. 방법은 다 알고나면 간단해 보일지 모르겠지만 나름 고민을 많이 했던 주제였다. 과정 ① 우선 흑백으로 만든 후 사진의 gray level의 개수를 담을 배열을 잡아준다. 난 교재에서 level이 0~7이 길래 255크기를 log_scale로 나누는 건가.. 아니면 그냥 임의의 숫자로 나누는 건가 싶어서 몇 시간을 고민했는데, 임의로 나눠도 되고, 아무렇게나 기준을 잡아 단계를 나누면된다. 빽빽한 히스토그램이 보고싶으면 0~255로 배열을 만들면 된다. [0,1,2,3,4,....255] ② 배열에 담긴 숫자..

개념 bit slicing은 1차원으로 이루어진 흑백 사진에서 bit단위로 사진을 추출해 총 8개의 단위로 쪼개서 나눈다. 예를들어 pixel의 값이 01010000 이라면 이 pixel 원소의 위치에서 각각 5,7번째를 원소에 저장한다. bitSlices라는 3차원 배열이 있다면, bitSlices(:,:,7) 슬라이스에 해당 위치의 픽셀 값은 = 64로 저장, bitSlices(:,:,5) 슬라이스에 해당 위치의 픽셀 값은 1 * 2^(5-1) = 16로 저장 된다. 이 기법은 중요하지 않은 데이터를 압축하거나, 미디어같이 영상정보를 통신으로 처리할 때는 중요한 정보를 우선적으로 보내고 나머지 중요하지 않은 정보는 천천히 보내서 데이터를 유용하게 관리하기 위해 사용된다. 또한, 보안 분야에서는 특정 ..

개념 아래의 사진과 같이 특정 구간(A-B)에서의 강도나 대비를 다른 함수를 통해 바꿔주는 방법을 말한다. 함수는 고등학교때 배운 범위별 케이스로 나누는 함수를 생각하면 된다. 종류 Contrast Stretching 이 기법은 명암을 좀더 대비시켜 준다. Intensity Level Slicing 이 기법은 특정 강도(밝기)를 강조시켜준다. 코드 코드는 intensify level slicing을 예제로 해보겠다. 함수는 intensify level slicing 사진의 1번째 도표와 비슷하게 만들어 주었다. img = imread("dog.jpg"); img = uint8(mean(img,3)); A=150; B=200; [m,n] = size(img); for i=1:m for j=1:n if im..

sort()의 문제점 최근 백준 문제를 풀던 중, pair로 담은 vector에서 이중 정렬을 compare() 를 구현하여 sort() 인자로 넣는 것 까진 잘 이해 하면서 풀었다. 하지만, pair에서 정렬 기준을 2개를 잡는 것이 아닌, 1개만 잡고 하면 나머지 다른 원소는 입력된 순서로 정렬 되는 것이 아닌 , 무작위로 정렬이 된다. 예를 들어보자. 문제: https://www.acmicpc.net/problem/10814 #include #include #include using namespace std; bool comp(pair a, pair b) { return a.first < b.first; } int main() { int T; int age; string name; vector sk..

개념 우선, 위키백과의 사전 정의를 보면 컴퓨터 분야에서 쓰이는 Base란 6비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다. 원래 Base 64를 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 즉, 다음 제곱수인 128진법에는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다. 그런 까닭에 이 인코딩은 전자 메일을 통..