전체 글 86

GNN

정의Graph Neural Network노드와 노드 간의 연결성을 나타내는 엣지로 구성된 그래프 데이터에 적합한 학습 알고리즘그래프 구조를 활용해 loss 값을 최소화시키는 것특징유클리디언 공간1차원, 2차원에서 표현 가능이미지와 텍스트, 오디오는 유클리디언 공간상에서 표현할 수 있다.이 데이터들은 거리가 중요하다. (노드-노드로 연결된 격자 형태임으로)반면, 복잡한 연결 관계와 객체 간의 상호 의존성을 그래프로 나타내야 하는 상황이 있다. ( ex. 분자 구조, SNS 데이터 )이들은 연결여부와 연결강도가 중요하다.node, edge, feature로 GNN 그래프가 구성된다. node와 edge의 관계를 인접행렬로 나타내고, feature은 특징 행렬로 나타낸다.

🧠 AI 2024.08.02

LSTM

https://www.youtube.com/watch?v=HXa7Ah87_gM * 위 영상을 보고 정리한 글입니다. 문제시 말씀해 주세요! *LSTM은,- 시계열 데이터를 처리한다. - RNN의 장기의존성 문제 약점을 보완하기 위해 나왔다. => LSTM의 셀 상태 (Cell State, CS)라 불리는 정보가 핵심적 RNN의 약점, 장기의존성 체인룰이 계속해서 늘어남.-> 기울기가 작아짐 -> 학습에 미치는 영향이 미미하다는 뜻 -> 시간적으로 먼 입력값일수록 학습에 미치는 영향이 작아짐ex. don't / underestimate / your / inner / strength을 번역 => 당신의 / 내면의 / 힘을 / 과소평가하지 / 마세요don't와 마세요는 의미적으로 가깝지만, 이러한 관계가 반영..

🧠 AI 2024.07.29

[혼공학습단 12기] 10장, 프로세스와 스레드

[ 프로세스 ]정의 : 실행 중인 프로그램 사용자가 볼 수 있는 공간에서 실행되는 프로세스 (=포그라운드 프로세스) , 사용자가 보지 못하는 뒤편에서 실행되는 프로세스 (=백그라운드 프로세스)로 나누어진다.백그라운드 프로세스는 다시 사용자와 상호작용하느냐 안 하냐에 따라 갈라지며, 사용자와 상호작용하지 않는 프로세스를 데몬 및 서비스라 부른다.  [ 프로세스 제어 블록(PCB) ]프로세스와 관련된 정보를 저장하는 자료구조 ( = 상품에 달린 태그 ) - 운영체제는 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분하면서 PCB를 이용한다.- 커널 영역에 생성된다.- 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기된다. 담기는 정보1. 프로세스 ID(PID)특정 프로..

[혼공학습단 12기] 9장, 운영체제 시작하기

[ 운영체제 ]1. 정의 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램 - 모든 프로그램은 하드웨어를 필요로 한다.- 이때 프로그램 실행에 마땅히 필요한 요소들을 (시스템) 자원이라고 하며, 프로그램 실행에 있어 반드시 필요하다. (ex : cpu, 메모리, 입출력 장치와 같은 컴퓨터 부품들이 그 예시) - 인터넷 브라우저, 게임과 같은 프로그램과 같은 프로그램이다. 2. 역할 및 특징자원을 효율적으로 분배하고 관리 ( => 정부와 비슷한 역할 ) - 응용 프로그램과 하드웨어 사이에서 응용 프로그램이 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리한다. - 다른 프로그램과 마찬가지로 메모리에 적재되어야 하는데,운영체제는 특별한 프로그램이기 때문에..

[혼공학습단 12기] 8장, 입출력장치

" 장치 컨트롤러 역할 " - 종류가 많고, 데이터 전송률이 낮아 CPU나 메모리에 비해 까다롭다.(다른 언어를 하는 것, 말의 속도가 달라 대화가 안 되는 것과 같다.)- 컴퓨터 내부와 정보를 주고받는다. 역할1.CPU와 입출력장치 간의 통신 중개2. 오류 검출3. 데이터 버퍼링 버퍼링- 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법- 버퍼에 데이터를 조금씩 모았다가 한꺼번에 내보내거나, 데이터를 한 번에 많이 받아 조금씩 내보내는 방법 " 장치 컨트롤러 구조 " 데이터 레지스터, 상태 레지스터, 제어 레지스터로 구성된다. 1. 데이터 레지스터- CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터- 버퍼 역할 2. 상..

[혼공학습단 12기] 7장, 보조기억장치

" 하드 디스크 구성 요소 " 자가적인 방식으로 데이터를 저장하는 보조 기억 장치[ 플래터 ] flatter- 실질적으로 데이터가 저장되는 곳- 자기 물질로 덮여 있어 수많은 N, S극을 저장함 (0,1 역할을 수행) [ 스핀들 ] spindle- 플래터를 회전시키는 구성 요소- 스핀들이 플래터를 돌리는 속도는 분당 회전수를 나타내는 RPM 단위로 표현 [ 헤드 ] head- 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소 - 플래터 위에서 미세하게 떠있는 채로 데이터를 읽고 쓰는, 바늘같이 생긴 부품 [ 디스크 암 ] disk arm- 원하는 위치로 헤드를 이동시킨다. CD, LP에 비해 훨씬 많은 양의 데이터를 저장해야 하므로, 일반적으로 여러 겹의 플래터로 이루어져 있고, 플래터의 양면을 모두 사용..

[혼공학습단 12기] 6장, 메모리

" RAM 정의 " 실행할 프로그램의 명령어와 데이터가 저장되는 곳 - 전원을 끄면 저장된 내용이 사라지는 저장 장치 (휘발성 저장 장치) - 일반적으로 보조기억장치인 비휘발성 저장 장치에는 '보관할 대상'을 저장하고 /휘발성 저장 장치에는 '실행할 대상'을 저장함.WHY?보조기억장치는 전원이 나가도 내용을 유지하지만, CPU는 보조기억장치에 직접 접근하지 못하기 때문 " RAM 용량과 성능 "- CPU가 실행하고 싶은 프로그램이 보조기억장치에 있으면, 이걸 RAM으로 끌고 와야 된다.RAM 용량이 적다면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지게 된다.(EX. ) 도서관 책장에서 책을 뽑아 책장에 읽는 상황과 비슷하다. 책상이 크면 책을 많이 올려둘 수 있고, 동시에 읽..

[혼공학습단 12기] 5장, CPU 성능 향상

" 클럭 "- 조금이라도 빠른 CPU를 설계하려면? => 클럭 속도를 빠르게 높이면 된다.- 클럭속도만 올리면 빠른 CPU가 되는가? => X. 발열문제가 더 심각해질 뿐- Hz 단위로 측정, 1초에 클럭이 몇 번 반복되는지 체크 - 클럭 속도를 높이는 데에는 클럭 말고 코어와 스레드 수를 늘리는 방법이 있다.  " 코어 "명령어를 처리하는 일꾼이 여러 명 있는 것 - 명령어를 실행하는 부품으로 CPU 안에 여러 개 포함되어 있다.- 코어를 여러 개 가지고 있으면 멀티코어 CPU / 멀티코어 프로세서라 부른다.- 코어 개수만 올리면 빠른 CPU가 되는가? => X. 코어마다 연산이 분배가 되지 않으면 연산 속도는 증가하지 않는다. " 스레드 "실행 흐름의 단위 - CPU에서 사용되는 하드웨어적 스레드 /..

[혼공학습단 12기] 4장, CPU 원리

" ALU "  ALU는 무엇을 하나? 1. 레지스터를 통해 피연산자를 받아들이고,제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다.  2. 연산을 수행한 결괏값을 일시적으로 레지스터에 저장한다. (결과 형태 : 특정 숫자, 문자, 메모리주소)WHY?메모리 접근 속도가 레지스터 접근 속도보다 훨씬 느리므로연산할 때마다 메모리에 저장하면 프로그램 실행 속도가 느려질 수 있기 때문 3. 계산 결과와 플래그를 같이 내보낸다. 플래그는 플래그 레지스터에 저장된다.( 플래그 : 연산 결과에 대한 추가적인 정보)[ 플래그 종류 ]부호 플래그연산 결과 부호1이면 음수 / 0이면 양수제로 플래그연산 결과가 0인가?1이면 0 / 0이면 0아님캐리 플래그올림수나 빌림수가 발생했는가?1이면 올림수,빌림수 발생 / ..

백준 2902번

https://www.acmicpc.net/problem/2920 문제 >다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오. 솔루션 :list로 입력받고 비교하면 될 것 같다.num = list(map(int,input().split(" ")))if num == [1,2,3,4,5,6,7,8]: ..