전체 글(113)
-
[NLP] Seq2seq
저번 장에서는 LSTM과 같은 모델을 통해서 게이트가 추가된 RNN 모델이 어떻게 장기 기억을 가져가는지 알아볼 수 있었다. 이번 장에서는 이 LSTM 모델을 Encoder와 Decoder라는 2가지 형태로 구현하여 하나의 시퀀스(시계열)를 다른 시퀀스로 변환하는 방법을 알아보도록 하자. seq2seq 모델은 하나의 순환 신경망(Encoder)에서 입력을 통과시켜 출력된 마지막 은닉 상태(h)를 다른 신경망(Decoder) 에 전달한다. 이 은닉 상태(h)는 입력(x)에 대한 정보를 하나로 응축시킨 데이터라고 할 수 있다. Decoder는 이 마지막 은닉 상태만을 가지고 입력에 대한 시계열을 출력한다. Encoder부터 구현해보자. class Encoder: def __init__(self, vocab_..
2023.02.26 -
[TopCoder] HandsShaking(악수)
원형 테이블에 둘러앉아 있는 n명의 사업가들의 모임을 생각해보자. 회의를 시작하려면, 그들은 악수를 해야 한다. 각각의 사업가들은 정확히 한 명의 다른 사업가와 악수를 한다. 모든 악수는 동시에 이루어집니다. 우리는 서로 팔짱을 끼지 않으면 악수가 완벽하다고 말한다. int n이 주어졌을 때, n명의 사업가들에게 존재하는 완벽한 쉐이크의 수를 반환한다. 자세한 설명은 예를 참조하십시오. Definition Class: HandsShaking Method: countPerfect Parameters: int Returns: long long Method signature: long long countPerfect(int n) (be sure your method is public) Examples 0) 2..
2023.02.25 -
[TopCoder] ChessMetric (체스 행렬)
당신이 n by n 체스판과 킹나이트라고 불리는 슈퍼피스를 가졌다고 가정해보자. 아래의 'K'로 표시된 킹나이트는 아래의 'X' 또는 'L'로 표시된 공간 중 하나에 도달할 수 있다: ....... ..L.L.. .LXXL. ..XKX.. .LXXL. ..L.L.. ....... 즉, 킹나이트는 어떤 방향으로든 한 공간(수직, 수평 또는 대각선)을 이동하거나 'L'자 모양의 이동을 할 수 있다. 'L'자 모양의 동작은 2칸을 수평으로 이동한 후 1칸을 수직으로 이동하거나 2칸을 수직으로 이동한 후 1칸을 수평으로 이동하는 것을 포함한다. 위의 도면에서 'L'자 모양의 이동은 'L'로 표시되는 반면, 한 공간 이동은 'X'로 표시됩니다. 게다가, 킹 나이트는 보드에서 절대 뛰어내리지 않을 수도 있다. 보드..
2023.02.25 -
[TopCoder] BadNeighbors (나쁜 이웃들)
옛 노래는 "이웃을 미워하라"고 선언하고, 오네틴빌 주민들은 그 말을 마음에 새겼다. 모든 주민들은 양쪽 모두 옆집 이웃들을 싫어한다. 그의 이웃들만큼 마을 우물에서 멀리 떨어진 곳에 살고 싶어하는 사람은 아무도 없기 때문에 마을은 우물 주위에 큰 원을 그리며 배열되어 있다. 불행하게도, 그 마을의 우물은 황폐해졌고 복구가 필요하다. 당신은 세이브 오어 웰 기금을 위한 기부금을 모으기 위해 고용되었습니다. 마을 주민 각자는 기부금에 명시된 대로 일정 금액을 기부할 의사가 있으며, 이는 우물 주위에 시계 방향으로 나열되어 있다. 하지만, 아무도 그의 이웃이 기부한 기금에 기꺼이 기부하려 하지 않는다. 기부금의 첫 번째와 마지막 항목이 이웃을 위한 것이라는 점을 제외하고는 이웃이 기부금에 항상 연속적으로 등..
2023.02.25 -
[TopCoder] CorporationSalary (회사 급여)
당신은 대기업 인사과에서 일하고 있습니다. 각 직원은 여러 명의 직접 관리자 및/또는 여러 명의 직접 부하 직원을 가질 수 있습니다. 물론 그의 부하직원들도 그들만의 부하직원이 있을 수 있고, 그의 직속상관들도 그들만의 관리자가 있을 수 있다. 우리는 X가 A의 지배인, A가 B의 지배인, D가 Y의 지배인 등 일련의 종업원 A, B, ..., D가 존재한다면 종업원 X는 종업원 Y의 보스라고 말한다(물론 X가 종업원 Y의 직접 지배인이라면 X는 종업원 Y의 보스가 될 것이다). 만약 A가 B의 보스라면, B는 A의 보스가 될 수 없다. 새로운 회사 방침에 따르면, 부하 직원이 없는 직원의 급여는 1입니다. 만약 직원에게 부하 직원이 있다면, 그의 급여는 그의 직속 부하 직원들의 급여를 합한 것과 같다...
2023.02.25 -
[NLP] LSTM(Long Short-Term Memory)
지난 장에서는 RNN이 무엇인지 살펴보고, RNN을 통해서 어떻게 모델이 장기 기억을 가져가는지 알아보았다. 하지만 RNN은 Time이 늘어짐에 따라 역전파 과정에서 기울기 소실/폭발이 일어날 수 있다는 문제점이 있다. 이번 장에서는 이러한 문제점을 극복할 수 있는 LSTM을 알아보고 구현하도록 해보자. LSTM은 Long Short-Term Memory의 약자로 '기억 셀'이라는 요소를 통해서 시계열에서 어떤 지점을 기억하고, 잊을지에 대해서도 학습하는 더 발전된 형태의 순환신경망이다. 기존 RNN에서는 이전 타임(t-1)에서 은닉 상태(h_t-1)를 전달받아서 현재(t)의 은닉 상태(h_t)를 계산해냈다. LSTM에서는 이 중간 계산 과정에 여러가지 게이트들(f, g, i, o)을 추가해서 어떤 시점..
2023.02.25